walrusk
10/29/2014 - 2:37 PM

Athletic__1.4_1.53.diff

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index a55b965..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-assets/css/.sass-cache/*
-assets/css/styles.css
\ No newline at end of file
diff --git a/assets/css/config.rb b/assets/css/config.rb
deleted file mode 100644
index 568cba1..0000000
--- a/assets/css/config.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-gem 'zurb-foundation', '=3.2.5'
-require 'zurb-foundation'
-# Require any additional compass plugins here.
-
-# note that this is the directory that CSS files will be written. It can be the theme dir
-# or a subdirectory (e.g. theme_dir/css). Whatever this path is MUST exist
-remote_theme_dir_absolute = '/template/Styles'
-
-# SFTP Connection Details - Does not support alternate ports os SSHKeys, but could with mods
-sftp_host = 'hostname.com' # Can be an IP
-sftp_user = 'username' # SFTP Username
-sftp_pass = 'password' # SFTP Password
-
-# Set this to the root of your project when deployed:
-http_path = "/"
-
-css_dir = ""
-sass_dir = "scss"
-images_dir = "../images"
-javascripts_dir = "js"
-
-# Production Assets URL
-http_images_path = "../images"
-
-# You can select your preferred output style here (compressed / expanded) (can be overridden via the command line):
-output_style = :expanded
-
-# To enable relative paths to assets via compass helper functions. Uncomment:
-# relative_assets = true
-
-# To disable debugging comments that display the original location of your selectors. Uncomment:
-line_comments = false
-
-# If you prefer the indented syntax, you might want to regenerate this
-# project again passing --syntax sass, or you can uncomment this:
-# preferred_syntax = :sass
-# and then run:
-# sass-convert -R --from scss --to sass sass scss && rm -rf sass && mv scss sass
-
-
-# Callback to be used when a file change is written. This will upload to a remote WP install
-#on_stylesheet_saved do |filename|
-#  $local_path_to_css_file = css_dir + '/' + File.basename(filename)
-
-#  Net::SFTP.start( sftp_host, sftp_user, :password => sftp_pass ) do |sftp|
-#    puts sftp.upload! $local_path_to_css_file, remote_theme_dir_absolute + File.basename(filename)
-#    end
-#  puts ">>>> Compass is polling for changes. Press Ctrl-C to Stop"
-#end
\ No newline at end of file
diff --git a/assets/css/scss/_mixins.scss b/assets/css/scss/_mixins.scss
deleted file mode 100644
index 5a0d616..0000000
--- a/assets/css/scss/_mixins.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-// MIX-INS
-@mixin transition($transition-property, $transition-time, $method) {
-	-webkit-transition: $transition-property $transition-time $method;
-	-moz-transition: $transition-property $transition-time $method;
-	-ms-transition: $transition-property $transition-time $method;
-	-o-transition: $transition-property $transition-time $method;
-	transition: $transition-property $transition-time $method;
-}
-
-@mixin contrast-color($bgcolor, $lightColor:"#fff", $darkColor:"#000") {
-	@if lightness($bgcolor) > lightness(#bbbbbb) {
-		color:#{$darkColor};
-	}
-	@else {
-		color:#{$lightColor};
-	}
-}
\ No newline at end of file
diff --git a/assets/css/scss/_theme-settings.scss b/assets/css/scss/_theme-settings.scss
deleted file mode 100644
index 12ee2f8..0000000
--- a/assets/css/scss/_theme-settings.scss
+++ /dev/null
@@ -1,342 +0,0 @@
-// ******************************* //
-//       BASE SPROUT SETTINGS      //
-// ******************************* //
-
-// ACTION COLORS
-	$mainColor: #C41C22;
-	$secondaryColor: #002E59;
-		
-// TEXT COLORS
-	$txtColor: #222;
-	$txtFocus: $mainColor;
-	$txtSubtle: $secondaryColor;
-	
-// FILL COLORS
-	$fillFocus: $mainColor;
-	$fillSubtle: $secondaryColor;
-
-// SITE STRUCTURE
-	$headerMinHeight: 75px;
-	$topBarBreakPoint: 768px;
-	
-// PRODUCT GRID
-	$prodMargin: 1%;
-	$prodsInRow: 4;
-	$prodsInRowSidebar: 2;
-	$prodsInRowTablet: 2;
-	
-	$prodNameFontSize: 14px;
-	$prodNameRows: 4;
-	
-	$ratingStarColor: #3E4142;
-	
-// CAROUSEL
-	$carouselMaxHeight: 300px;
-
-// HEADER
-	$logoTextColor: $txtColor;
-	$accountLinksColor: $txtColor;
-
-// SOCIAL ICONS
-	$socialIconsColor: $txtColor;
-	$socialIconsOpacity: 0.6;
-	$socialIconsHoverColor: $socialIconsColor;	
-	$socialIconsHoverOpacity: 1;	
-	
-// CATEGORY PAGE
-	$subCatImageMaxDim: 100px;
-	
-// PRODUCT PAGE
-	$thumbMaxWidth: 100px;
-	$thumbMaxHeight: 90px;
-	
-// FORM
-	$formLabelWidth: percentage(2/12);
-	$formValueWidth: percentage(10/12);
-	$formLabelWidthHalf: percentage(4/12);
-	$formValueWidthHalf: percentage(8/12);
-	
-	$formLabelWidthProduct: 75%;
-	$formValueWidthProduct: 75%;	
-	
-	$priceLabelLineHeight: 20px;
-	$inputLabelLineHeight: 30px;
-
-
-
-// ******************************* //
-// SPROUTCOMMERCE MODULE SETTINGS  //
-// ******************************* //
-
-	// MODULE: categories-mega
-		$megaMenuWidth: 600px;
-		$megaMenuColumns: 4;
-		
-		$megaMenuWidthTablet: 500px;
-		$megaMenuColumnsTablet: 3;
-
-
-// ******************************* //
-//       FOUNDATION SETTINGS       //
-// ******************************* //
-
-
-// FONT
-	// $fontSmoothing: antialiased;
-	$headerFontFamily: 'Roboto Condensed', sans-serif;
-	$headerFontWeight: 700;
-	$headerFontStyle: normal;
-	$headerFontColor: #41413b;
-	$headerLineHeight: 1.25;
-	$bodyFontFamily: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
-	$bodyFontWeight: 400;
-	$bodyFontStyle: normal;
-	$bodyFontColor: $txtColor;
-	$bodyLineHeight: 1.3;
-	
-	
-// TOP BAR
-	$topBarBgColor: #222;
-	// $topBarHeight: 45px;
-	// $topBarHeightMobile: 45px;
-	// $topBarBtmMargin: 30px;
-	// $topBarTitleWeight: bold;
-	// $topBarTitleSize: 17px;
-	
-	$topBarLinkColor: #fff;
-	$topBarLinkHoverColor: darken($topBarLinkColor, 5%); // Sprout	
-	$topBarLinkHoverBgColor: #000;
-
-	$topBarDividerColorLight: rgba(#fff,.1); // Sprout
-	$topBarDividerColorDark: darken($topBarBgColor, 5%); // Sprout
-	$topBarDividerColorLightHover: rgba(#fff,.2); // Sprout
-
-	// $topBarLinkWeight: bold;
-	// $topBarLinkSize: 13px;
-	$topBarDropBgColor: $topBarLinkHoverBgColor;
-	$topBarDropLinkColor: #fff;
-	$topBarDropLinkHoverBgColor: lighten($topBarDropBgColor, 20%); // Sprout
-	// $topBarDropToggleSize: 5px;
-	// $topBarDropToggleColor: #fff;
-	$topBarDropToggleAlpha: 0.5;
-	// $topBarSearchWidth: 200px;
-	// $topBarNavToggleSize: 8px;
-
-
-// GRID
-	// $rowWidth: 1000px;
-	// $columnGutter: 30px;
-	// $totalColumns: 12;
-	// $mobileTotalColumns: 4;
-	// $blockGridElements: 12; // Highest number of block grid elements, Maximum of 24 supported
-	
-	
-// COLORS
-	$alertColor: #c60f13;
-	// $successColor: #5da423;	
-	// $highlightColor: #ffff99;
-	// $black: #000;
-	$white: #fff;
-	// $shinyEdge: rgba(#fff, .5);
-	$darkEdge: rgba(#000, .2);
-	
-	// Text Direction Settings
-	
-	// $textDirection: ltr; // Controls default global text direction, 'rtl' or 'ltr'
-	
-	// Button Settings
-	
-	// $buttonRadius: 3px;
-	// $btnBase: 10px;
-	
-	// $tinyBtnBase: $btnBase - 5;
-	// $smallBtnBase: $btnBase - 3;
-	// $largeBtnBase: $btnBase + 5;
-	
-	
-// FORM
-	// $formSpacing: 12px;
-	// $labelFontWeight: 500;
-	// $labelFontColor: lighten(#000, 30%);
-	// $labelBtmMargin: 3px;
-	// $inputFontColor: rgba(0,0,0,0.75);
-	// $inputFontSize: 14px;
-	// $inputBgColor: #fff;
-	// $inputFocusBgColor: darken(#fff, 2%);
-	// $inputBorderColor: darken(#fff, 20%);
-	// $inputFocusBorderColor: darken(#fff, 30%);
-	// $inputBorderStyle: solid;
-	// $inputBorderWidth: 1px;
-	// $inputBorderRadius: 2px;
-	// $fieldsetBorderRadius: 3px;
-	
-	
-// CUSTOM FORM
-	// $custFormBorderColor: #ccc;
-	// $custFormBgColor: #fff;
-	// $custCheckColor: #222;
-	// $custSelectCurrentFontColor: #141414;
-	// $custSelectBgColor: #fff;
-	// $custSelectBorderColor: #ddd;
-	// $custSelectTriangleColor: #aaa;
-	// $custSelectTriangleColorOpen: #222;
-	// $custSelectDropHeight: 200px;
-	// $custDropdownBgColor: #fff;
-	// $custDropdownBorderColor: darken(#fff, 20%);
-	// $custDropdownFontColor: #555;
-	// $custDropdownSelectedBgColor: lighten(#2ba6cb, 40%);
-	// $custDropdownSelectedFontColor: #000;
-	// $custFormDisabledBgColor: #ddd;
-	
-	
-// TABS
-	// $tabHeight: 40px;
-	// $tabTermFontSize: 12px;
-	
-	
-// NAV BAR
-	// $navBarHeight: 40px;
-	// $navFlyoutBaseWidth: 250px;
-	
-	
-// UI
-	// $thumbRadius: 3px;
-	// $progBarHeight: 25px;
-	// $progBarBorderColor: darken(#fff, 20%);
-	// $progBarBorderSize: 1px;
-	// $progBarPad: 2px;
-	// $linkListBottomMargin: 17px -22px;
-	// $tableBorderRadius: 3px;
-	
-	
-// TOOLTIP
-	// $hasTipBorderBottom: dotted 1px #ccc;
-	// $hasTipFontWeight: bold;
-	// $hasTipFontColor: #333;
-	// $hasTipBorderBottomHover: dotted 1px darken($mainColor, 20%);
-	// $hasTipFontColorHover: $mainColor;
-	$tooltipBackgroundColor: $white;
-	$tooltipBackgroundOpacity: 0.95;
-	// $tooltipFontSize: 12px;
-	// $tooltipFontWeight: bold;
-	$tooltipFontColor: $txtColor;
-	// $tapToCloseFontSize: 10;
-	// $tapToCloseFontWeight: normal;
-	// $tapToCloseFontColor: #888;
-	// $tooltipFontSizeScreenSm: 14;
-	// $tooltipBgOpacityScreenSm: 0.85;
-	// $tooltipBorderRadius: 4px;
-	
-	
-// PRICING TABLE
-	// $priceTableBorder: solid 1px #ddd;
-	// $priceTitleBgColor: #ddd;
-	// $priceTitlePadding: 15px 20px;
-	// $priceTitleAlign: center;
-	// $priceTitleColor: #333;
-	// $priceTitleWeight: bold;
-	// $priceTitleSize: 16px;
-	
-	// $priceMoneyBgColor: #eee;
-	// $priceMoneyPadding: 15px 20px;
-	// $priceMoneyAlign: center;
-	// $priceMoneyColor: #333;
-	// $priceMoneyWeight: normal;
-	// $priceMoneySize: 20px;
-	
-	// $priceBgColor: #fff;
-	// $priceDescColor: #777;
-	// $priceDescPadding: 15px;
-	// $priceDescAlign: center;
-	// $priceDescFontSize: 12px;
-	// $priceDescWeight: normal;
-	// $priceDescLineHeight: 1.4;
-	// $priceDescBtmBorder: dotted 1px #ddd;
-	
-	// $priceItemColor: #333;
-	// $priceItemPadding: 15px;
-	// $priceItemAlign: center;
-	// $priceItemFontSize: 14px;
-	// $priceItemWeight: normal;
-	// $priceItemBtmBorder: dotted 1px #ddd;
-	
-	// $priceCtaBgColor: #f5f5f5;
-	// $priceCtaAlign: center;
-	// $priceCtaPadding: 20px;
-	
-	
-// ORBIT
-	// $orbitCaptionBgColorOldBrowser: #000;
-	// $orbitCaptionBgColor: rgba(0,0,0,.6);
-	// $orbitCaptionFontColor: #fff;
-	// $orbitBulletNavColor: #999;
-	// $orbitBulletNavColorActive: #222;
-	// $orbitHasThumbBorderColor: #000;
-	// $orbitHasThumbBorderWidth: 2px;
-	// $orbitHasThumbBorderStyle: solid;
-	// $orbitSlideNumBgColor: rgba(0,0,0,0.7);
-	// $orbitSlideNumFontColor: #fff;
-	// $orbitSlideNumPadding: 5px;
-	
-	
-// CLEARING
-	// $clearingBg: rgba(0,0,0,0.8);
-	// $clearingOldBrowserBg: rgb(0,0,0);
-	// $clearingCaptionBg: rgba(0,0,0,0.7);
-	// $clearingCaptionOldBrowserBg: rgb(0,0,0);
-	// $clearingCaptionFontColor: #fff;
-	// $clearingCloseColor: #fff;
-	// $clearingArrowColor: #fff;
-	// $clearingArrowSize: 16px;
-	// $clearingCarouselBg: rgba(0,0,0,0.75);
-	// $clearingCarouselOldBrowserBg: rgb(0,0,0);
-	// $clearingCarouselHeight: 150px;
-	// $clearingActiveImgHeight: 75%;
-	// $clearingCarouselThumbWidth: 175px;
-	// $clearingCarouselThumbActiveBorder: 4px solid rgb(255,255,255);
-	// $clearingImgBg: rgba(0,0,0,0.75);
-	// $clearingImgOldBrowserBg: rgb(0,0,0);
-	
-
-// JOYRIDE
-	// $tipBg: rgba(0,0,0,0.8);
-	// $tipBgIE8: #000;
-	// $tipFontColor: #fff;
-	// $tipHeaderWeight: bold;
-	// $tipDefaultWidth: 300px;
-	// $tipBorderRadius: 4px;
-	// $tipPadding: 18px 20px 24px;
-	// $tipNubSize: 14px;
-	// $tipFontSize: 14px;
-	// $tipTimerWidth: 50px;
-	// $tipTimerHeight: 3px;
-	// $tipTimerBorder: solid 1px #555;
-	// $tipTimerColor: #666;
-	// $tipCloseColor: #777;
-	// $tipCloseSize: 20px;
-	// $tipCloseWeight: normal;
-	// $tipScreenFill: rgba(0,0,0,0.5);
-	
-	
-// MODULAR SCALE
-	//$ratio: $golden; // THIS IS DEFAULT IN MODULAR-SCALE
-	$baseFontSize: 14px;
-	$importantModNum: 44px;
-	$base-size: $baseFontSize $importantModNum;
-	
-	// 10 / 24 Produce the following list of values: 10, 14, 16, 24, 26, 38, 42, 62, 68, 101;
-	// 14 / 44 Produce the following list of values: 14, 17, 23, 27, 37, 44, 59, 71, 95, 115;
-	
-	// http://www.modularscale.com by Tim Brown
-	// https://github.com/scottkellum/modular-scale by scottkellum
-	
-
-// AUTOMATIC Settings (based on other variables)
-
-$prodWidth: (100% + $prodMargin) / $prodsInRow - $prodMargin;
-$prodWidthSidebar: (100% + $prodMargin) / $prodsInRowSidebar - $prodMargin;
-$prodWidthTablet: (100% + $prodMargin) / $prodsInRowTablet - $prodMargin;
-$prodNameMinHeight: ceil($prodNameRows * $prodNameFontSize * $headerLineHeight);
-
-$megaMenuColumnWidth: 100% / $megaMenuColumns;
-$megaMenuColumnWidthTablet: 100% / $megaMenuColumnsTablet;
\ No newline at end of file
diff --git a/assets/css/scss/_theme.scss b/assets/css/scss/_theme.scss
deleted file mode 100644
index 7cc09c1..0000000
--- a/assets/css/scss/_theme.scss
+++ /dev/null
@@ -1,3705 +0,0 @@
-// SproutCommerce Base SCSS
-
-// font includes
-@import url("//fonts.googleapis.com/css?family=Roboto+Condensed:400,700");
-
-select {
-	width:auto;
-	max-width:100%;
-}
-
-// HEADER
-.logo {
-	font-size:ms(3);
-	font-weight:700;
-	line-height:$headerMinHeight;
-	margin:0;
-}
-.topmenu-header {
-	margin-bottom:5px;
-	text-align:right;
-	li {
-		display:inline;
-		font-size:10px;
-		padding:0 5px;
-	}
-	li:first-child {padding-left:0;}
-	li:last-child {padding-right:0;}	
-	.phone-number {
-		font-size:12px;
-		vertical-align:middle;
-		white-space:nowrap;
-		a {color:$txtColor;}
-	}
-	.login-logout {white-space:nowrap;}
-}
-.topmenu-drop .phone-number {display:none;}
-.row.search-row {
-	margin-bottom:10px;
-	input {margin:0;}
-}
-
-// HEADINGS
-h1,h2 {font-size:ms(2);}
-h1,h2,h3,h4,h5,h6 {line-height:$headerLineHeight;}
-
-// TOP NAVIGATION
-.top-bar {
-	margin-bottom:12px;
-	&.expanded {height:45px;}
-	li.name {display:none;}
-	ul > li.toggle-topbar {width:100%;}
-	
-	// tooltip (only used in the top-bar for View Cart)
-	.has-tip {color:$white;cursor:pointer;}
-	
-	ul > li.categories {position:static;}
-	.categories .category-list > li > a {padding:0 15px;}
-	.categories .category-list > li.has-dropdown > a {padding-right:33.75px;}
-	
-	ul > li {
-		// top bar link hover color
-		&:hover:not(.na),
-		&.active:not(.na),
-		&:focus:not(.na) {
-			background: $topBarLinkHoverBgColor;
-			& > a {color: $topBarLinkHoverColor;}
-		}
-	
-		// dropdown link hover color
-		&.has-dropdown,
-		&.HasSubMenu {
-			.dropdown li {
-				a:hover,
-				a:focus {background: $topBarDropLinkHoverBgColor;}
-			}
-		}
-	}
-	
-	// hide text on home button (icon only)
-	.home span {display:none;}
-	
-	// top bar dividers
-	section > ul > li,
-	.categories > ul > li {
-		border-left:1px solid $topBarDividerColorLight;
-		border-right:1px solid $topBarDividerColorDark;
-	}
-	section > ul > li:hover,
-	.categories > ul > li:hover {border-left:1px solid $topBarDividerColorLightHover;}
-	
-	section > ul.left > li:last-child:not(.home) {border-right:0;}
-	section > ul.right > li:first-child {border-left:0;}
-	
-	.login-logout {color:$topBarDropBgColor;}
-}
-
-// TOOLTIPS
-.tooltip {
-	box-shadow:0px 1px 2px rgba(0,0,0,.25);text-align:center;
-
-	&.tip-top,
-	&.tip-right {
-		box-shadow:none;
-		color:$white;
-		background:rgba(0,0,0,.85);
-		text-align:left;
-		.nub {border-color:rgba(0,0,0,.85) transparent transparent;}
-	}
-}
-
-// ALERTS / TEXT FOCUS ELEMENTS
-div.alert-box {
-	background-color:$fillFocus;
-	display:none;
-}
-
-.panel.callout {
-	background-color:$fillFocus;
-	border-color: darken($fillFocus, 10%); 
-}
-.label {background: $fillFocus;}
-.label.secondary {color:#fff;}
-
-// BUTTONS
-input.button[type="button"] {
-	padding:8px 20px 9px;
-}
-
-// BLOCKQUOTE
-blockquote {padding:9px 20px 9px 19px;}
-
-// MAIN CAROUSEL
-.orbit {
-	max-height:$carouselMaxHeight;
-	overflow:hidden;
-
-	.slide-content {
-		max-width:42%;
-		position:absolute;
-		left:7%;top:8%;
-	}
-	.slide-heading {
-		font-size:50px;
-		font-weight:700;
-		text-shadow:2px 2px 2px rgba(0,0,0,.4);
-		text-transform:uppercase;
-	}
-	.slide-text {
-		font-size:24px;
-		display:block;
-		margin:8% 0 8%;
-		text-shadow:1px 1px 1px rgba(0,0,0,.4);
-	}
-	.button {
-		background-color:#000;
-		border:0;
-		box-shadow:none;
-		white-space:nowrap;
-	}
-	.slide-heading,
-	.slide-text {
-		-moz-transition:font-size .2s ease-in-out;
-		-webkit-transition:font-size .2s ease-in-out;
-		-o-transition:font-size .2s ease-in-out;
-		transition:font-size .2s ease-in-out;
-	}
-}
-
-// PRODUCT-GRID
-.product-grid {
-	clear:both;
-	margin-bottom:40px;
-	ul {margin:0;overflow:hidden;}
-	li {
-		background:#fff;
-		box-shadow:inset 0 0 1px rgba(0,0,0,.2);
-		float:left;
-		list-style:none;
-		margin:$prodMargin $prodMargin 0 0;
-		overflow:hidden;
-		padding:10px 15px 10px;
-		position:relative;
-		width:$prodWidth;
-	}	
-	li:nth-child(#{$prodsInRow}n+#{$prodsInRow}) {margin-right:0;}
-	li:nth-child(#{$prodsInRow}n+1) {clear:left;}
-	h5 {
-		font-size:$prodNameFontSize;
-		margin:0;
-		min-height:$prodNameMinHeight;
-	}
-	.ProductDetails {margin-top:5px;}
-	.ProductImage {
-		display:table;
-		width:100%;
-		table-layout:fixed;
-	}
-	.ProductImage a {
-		display:table-cell;font-size:0px;height:200px;text-align:center;vertical-align:middle;width:$prodWidth;
-		img {
-			max-width: 100%;
-		}
-	}
-	
-	.ProductActionAdd, .ProductRating {display:block;text-align:center;}
-	.ProductActionAdd {margin:5px 0;}
-	.ProductCompareButton {text-align:center;}
-	.IndividualPrice {display:none;}
-	
-	// QUICK VIEW
-	.quickview {
-		position:absolute;
-		top:86px;
-		left:50%;
-		margin-left:-45px;
-		opacity:0;
-		-moz-transition:opacity 250ms ease-in-out;
-		-webkit-transition:opacity 250ms ease-in-out;
-		-o-transition:opacity 250ms ease-in-out;
-		transition:opacity 250ms ease-in-out;
-	}
-	li:hover .quickview {opacity:1;}
-}
-.six .product-grid li, .nine .product-grid li {margin:$prodMargin $prodMargin 0 0;width:$prodWidthSidebar;}
-.six .product-grid li:nth-child(#{$prodsInRowSidebar}n+#{$prodsInRowSidebar}),
-.nine .product-grid li:nth-child(#{$prodsInRowSidebar}n+#{$prodsInRowSidebar})
- {margin-right:0;}
-
-.product-grid table.header {display:none;}
-
-.hide-fourth-product ul li:nth-child(4),
-.hide-fourth-product ul li:nth-child(5),
-.hide-fifth-product ul li:nth-child(5) {display:none;}
-.overlay-link {position:absolute;top:0;left:0;width:100%;}
-
-// PRODUCT-LIST
-.page .product-list {
-	table.header {display:table;margin:0;}
-	ul li {
-		margin-right:0;
-		width:100%;
-	}
-	.ProductImage {
-		display:block;float:left;width:30%;
-		img { max-height:250px; }
-	}
-	.ProductDetails {
-		float:right;width:70%;
-		padding-left:30px;
-		.row {float:right;width:44%;}
-		.CustomizeItemLink {float:left;}
-	}
-	h5 {float:left;width:56%;}
-	.qty-label {display:none;}
-	.IndividualPrice {display:inline;line-height:32px;position:relative;right:15px;}
-	.ProductOptions {clear:both;}
-}
-
-// PRODUCT PRICE
-.ProductPrice {
-	color:$txtColor;
-	font-size:20px;
-	font-weight:700;
-}
-.ProductPrice strike {color:$txtColor;font-size:12px;}
-.callout .ProductPrice {color:$white;}
-.callout table .ProductPrice {color:$mainColor;}
-
-// PRODUCT IMAGE & THUMBS
-.product-images {text-align:center;margin-bottom:30px;}
-.clearing-assembled {margin-top:20px;}
-ul.product-thumbs {
-	text-align:center;
-	
-	li {
-		border:6px solid rgba(0,0,0,.1);
-		display:inline-block;
-		margin:0 2px 10px;
-		vertical-align:top;
-		font-size:0;
-	}
-	li:hover {border:6px solid $mainColor;}
-	li > a {
-		border:3px solid #fff;
-		display:table;
-		overflow:hidden;
-		.thumb-image {
-			display:table-cell;
-			max-width:100px;
-			width:$thumbMaxWidth;
-			height:$thumbMaxHeight;
-			vertical-align:middle;
-			img{
-				max-height:100%;
-			}
-		}
-	}
-}
-.clearing-blackout {
-	background:#222;
-	margin:0;
-	
-	ul > li {border:0;display:block;margin:0;}
-	ul > li:hover {border:0;}
-	ul > li > a {border:0;display:inline;}
-}
-.clearing-assembled .clearing-container ul[data-clearing] li.visible {border-top:4px solid $mainColor;}
-.clearing-main-right, .clearing-main-left {width:200px;}
-.clearing-main-right:hover, .clearing-main-left:hover {background:rgba(255,255,255,.1);}
-.clearing-main-right:before {right:0;}
-.clearing-main-left.disabled, .clearing-main-right.disabled {opacity:.15;}
-
-// PRODUCT DETAILS
-.row.DetailRow {margin-bottom:15px;}
-.Label {color:#4D4D4D;font-weight:500;text-align:right;padding-right:10px;margin-bottom:3px;}
-.Value,.row form .DetailRow .Value {padding-left:0;}
-.row form .DetailRow {margin:0;}
-.Label.column {width:$formLabelWidthHalf;}
-.Value.column {width:$formValueWidthHalf;}
-.product.page {
-	.Label.column {width:$formLabelWidthProduct;}
-	.Value.column {width:$formValueWidthProduct;}
-}
-
-.productAttributeList {margin-top:-15px;}
-
-// PRODUCT RATING
-.show-reviews,.rating-stars {
-	&.rating-0 {visibility:hidden;}
-	i {color:$ratingStarColor;}
-}
-
-// PRODUCT TABS
-.main .tabs-content {clear:both;min-height:250px;}
-
-// PRODUCT TAB - VIDEO TAB
-.videoRow {cursor:pointer;}
-
-// PRODUCT TAB - REVIEW LIST
-#dsq1 {height:auto !important;}
-.ProductReviewList  {
-	blockquote {padding-top:0;}
-	h4 {margin-bottom:10px;}
-}
-#recaptcha_response_field {height:22px;}
-
-// PRODUCT TAB - REVIEW RATING STARS
-#rating-stars {
-	float:left;
-	
-	.icon-star {
-		color:rgba(0,0,0,.2);font-size:36px;cursor:pointer;line-height:16px;
-		-moz-transition:all 200ms ease-in-out;
-		-webkit-transition:all 200ms ease-in-out;
-		-o-transition:all 200ms ease-in-out;
-		transition:all 200ms ease-in-out;
-	}
-	&.rating-1 .icon-star:first-child {color:$mainColor;}
-	&.rating-2 {
-		.icon-star:nth-child(1),.icon-star:nth-child(2) {
-			color:$mainColor;text-shadow:0 0 1px rgba(0,0,0,.8);
-		}
-	}
-	&.rating-3 {
-		.icon-star:nth-child(1),.icon-star:nth-child(2),.icon-star:nth-child(3) {
-			color:$mainColor;text-shadow:0 0 1px rgba(0,0,0,.8);
-		}
-	}
-	&.rating-4 {
-		.icon-star:nth-child(1),.icon-star:nth-child(2),.icon-star:nth-child(3),.icon-star:nth-child(4) {
-			color:$mainColor;text-shadow:0 0 1px rgba(0,0,0,.8);
-		}
-	}
-	&.rating-5 .icon-star {color:$mainColor;text-shadow:0 0 1px rgba(0,0,0,.8);}
-}
-
-// FAST CART 
-.FastCartThickBox{
-	.prodName{margin-bottom:10px; font-size:18px;}
-	.fcProdImg{
-		float:left;
-		margin-right:15px;
-	}
-	.ProductPrice{
-		display:block;
-		padding:5px 0;
-	}
-	.Quantity{margin-top:5px;}
-	.cartSummary{
-		line-height:18px;
-		.CheckoutButton{margin-top:10px;}
-	}
-	.CheckoutButton a{padding:10px 15px 11px;}
-	.fastCartBottom{
-		#fastCartSuggestive .ProductActionAdd a{
-			padding:10px 15px 11px;
-		}
-	}
-}
-
-// CHECKOUT
-.ExpressCheckoutBlock .ChangeLink {display:none;}
-.ExpressCheckoutBlockCompleted .ChangeLink {display:inline-block;}
-
-// QUICK SEARCH
-.QuickSearch {
-	margin: 0;
-	padding: 0;
-	text-align: left;
-	background: #fff;
-	position: absolute;
-	top: 100%;
-	right: 2px;
-	width:300px;
-	z-index: 9999;
-	box-shadow:-2px 2px 2px rgba(0,0,0,.1);
-	border-radius:0;
-	margin-top:1px;
-}
-.QuickSearchHover td {
-	background: $fillSubtle;
-}
-.QuickSearchTitle td,
-.QuickSearchAllResults td {
-	font-weight: bold;
-	padding: 5px 44px 6px;
-	font-size: 11px;
-}
-.QuickSearchResult td {
-	font-size: 12px;
-	padding:8px;
-	cursor: pointer;
-}
-.QuickSearchResultImage {
-	margin-left: 4px;
-	margin-right: 10px;
-	text-align: center;
-	padding-right:0;
-}
-.QuickSearchResultNoImage {
-	padding-top: 10px;
-	color: #777;
-}
-.QuickSearchResultName {
-	text-decoration: none;
-	display: block;
-	padding-bottom: 5px;
-}
-.QuickSearchResult .Price {
-	font-weight: bold;
-	font-size: 12px;
-	padding-right: 5px;
-}
-.QuickSearchHover a {
-	text-decoration: underline;
-}
-.QuickSearchAllResults a {
-	text-decoration: underline;
-	display: block;
-}
-.QuickSearchAllResults a:active,
-.QuickSearchAllResults a {
-	outline: none;
-	-moz-outline-style: none;
-}
-
-// SOCIAL MEDIA BUTTONS
-.social-media {
-	text-align:center;
-	& > div {
-		display:inline-block;
-		vertical-align:top;
-	}
-}
-
-.addthis_default_style .at300b {
-  float: none;
-  display: inline-block;
-}
-
-// HEADER SOCIAL ICONS
-ul.social-links {
-	float:right;
-	margin:0;
-	span {display:none;}
-	li {margin:0;}
-	a {
-		color:rgba($socialIconsColor, $socialIconsOpacity);
-		font-size:18px;
-		margin-top:2px;
-	}
-	a:active,a:hover {
-		color:rgba($socialIconsHoverColor, $socialIconsHoverOpacity);
-	}
-}
-
-// PAGINATION
-.category-paging {
-	overflow:hidden;
-	& > ul {float:right;}
-}
-.pagination .ActivePage {
-	background-color:$mainColor;
-	color:#fff;
-	font-weight:bold;
-	padding:1px 7px;
-}
-
-// PANELS
-.panel {
-	h2,h3,h4 {margin-top:0;}
-}
-
-// FORMS
-.Submit {clear:both;text-align:right;}
-select.large,
-select.field-xlarge,
-select.small {
-	border:1px solid #CCC;
-	border-radius:3px;
-	color:#555;
-	font-size:13px;
-	line-height:13px;
-	outline:none;
-	height:32px;
-	padding:7px;
-	margin-bottom:9px;
-}
-select.small {width:auto;}
-
-.productAttributeLabel {
-	.productAttributeConfigurablePickListSet:not(.productAttributeRuleCondition) &,
-	.productAttributeConfigurablePickListSwatch &,
-	.productAttributeConfigurableEntryText & {
-		line-height:$inputLabelLineHeight;
-	}
-}
-.productOptionViewSelect select { @extend select.large; width:auto; }
-
-// search input type fix for webkit
-input[type=search]::-webkit-search-cancel-button,
-input[type=search]::-webkit-search-decoration,
-input[type=search]::-webkit-search-results-button,
-input[type=search]::-webkit-search-results-decoration {
-  -webkit-appearance:none;
-}
-input[type=search] {
-  -webkit-appearance:textfield;
-}
-
-.radio-inline {
-	margin:5px 0 12px;
-	label {display:inline;padding-right:8px;}
-	br {display:none;}
-}
-.radio-list {
-	margin:7px 0 18px;
-	label {margin-bottom:5px;display:inline-block;}
-	br {display:none;}
-	ul {line-height:1;list-style-type:none;}
-}
-#frmGiftCertificate .radio-list br {display:block;}
-.collapse select.large {border-radius:0 3px 3px 0;position:relative;right:2px;}
-form {
-	dt {
-		clear:both;
-		color:#4D4D4D;
-		float:left;
-		font-size:14px;
-		font-weight:500;
-		line-height:32px;
-		margin:0 0 12px;
-		padding:0 6px;
-		text-align:right;
-		width:$formLabelWidth;
-	}
-	dd {
-		float:right;
-		line-height:32px;
-		padding:0 6px;		
-		width:$formValueWidth;
-	}
-	small {line-height:32px;margin-left:10px;}
-	small,.LittleNotePassword {color:rgba(0,0,0,.5);font-size:12px;}
-	.area-note,.LittleNotePassword {position:relative;top:-10px;}
-}
-.payment .ErrorMessage {color:$alertColor;}
-.six dt, .nine dt {width:$formLabelWidthHalf;}
-.six dd, .nine dd {width:$formValueWidthHalf;}
-.six dl.tabs dd,.nine dl.tabs dd {width:auto;}
-.prefix small {margin-left:0;}
-.PriceLabel {line-height:$priceLabelLineHeight;}
-.InputLabel {line-height:$inputLabelLineHeight;}
-
-/* override inline styles on zip code fields */
-#FormField_13,#FormField_23 {width:100% !important;}
-
-// LISTS
-.square ul {list-style-type:square;margin-left:18px;}
-
-// RATING ICONS
-.ProductRating, .rating-stars {
-	i {color:$ratingStarColor;}
-	.icon-rating-2 {width:2.25em;}
-	.icon-rating-3 {width:3.25em;}
-	.icon-rating-4 {width:4.25em;}
-	.icon-rating-5,.icon-rating-6 {width:5.25em;}
-}
-.icon-rating-0:before { content: "\f005"; visibility:hidden; }
-.icon-rating-1:before { content: "\f005"; }
-.icon-rating-2:before { content: "\f005\f005"; }
-.icon-rating-3:before { content: "\f005\f005\f005"; }
-.icon-rating-4:before { content: "\f005\f005\f005\f005"; }
-.icon-rating-5:before,.icon-rating-6:before { content: "\f005\f005\f005\f005\f005"; }
-
-// CART PAGE
-.cart-header {
-	position:relative;
-	.three {position:absolute;bottom:20px;right:0;}
-}
-.ProceedToCheckout {text-align:center;}
-.CheckoutButton {margin-bottom:15px;}
-.CartThumb img {margin-top:10px;}
-.CartRemoveLink .icon-remove {color:rgba(0,0,0,.5);font-size:16px;}
-.productAttributes > span {display:block;font-size:12px;margin-bottom:4px;}
-
-// CATEGORY PAGE
-.RowDivider {display:none;}
-.subcat-grid img {max-width:$subCatImageMaxDim;max-height:$subCatImageMaxDim;}
-li.left {list-style-type:none;}
-
-.SortBox select {width:100%;}
-
-// ACCOUNT PAGES
-table ul.button-group {margin:0;}
-
-// EXPRESS CHECKOUT PAGE
-.express.checkout .panel {margin-bottom:10px;}
-.ExpressCheckoutTitle h4 {margin:0;}
-.ExpressCheckoutCompletedContent {color:$darkEdge;font-size:ms(0);margin-left:10px;}
-.ExpressCheckoutBlockCollapsed .ExpressCheckoutContent {display:none;}
-
-// SEARCH PAGE
-div.categoryPicker {
-    border: 1px solid #BBBBBB;
-    max-height: 300px;
-    overflow: auto;
-    padding-bottom: 3px;
-    padding-left: 3px;
-}
-
-// FOOTER
-footer.main {
-	color:#fff;
-	background:#222;
-	max-width:100%;
-	
-	margin:30px 0 0;
-	
-	h3 {color:#fff;}
-	ul {list-style:none;}
-	ul ul {display:none;}
-	p {text-align:center;}
-	.divider {opacity:.15;}
-	.credit-links p {font-size:12px;}
-}
-
-// ICONS
-.icon-googleplus {@extend .icon-google-plus;}
-.icon-tumblr {@extend .icon-sign-blank;}
-.icon-stumbleupon {@extend .icon-sign-blank;}
-
-// RE-USEABLE COMPONENTS
-.right-button {overflow:hidden;}
-.hidden {display:none;}
-.forcehidden {display:none !important;}
-.wide-image {max-width:100%;}
-.collapsed {margin:0;}
-.clear {clear:both;}
-.last {margin-bottom:15px;}
-.Required {color:$alertColor;}
-li.panel {list-style-type:none;}
-.panel {
-	.select2 {min-width:100%;}
-	.select2 a {color:$txtColor;}
-	&.callout label {color:$white;}
-	&.callout table label {color:$txtColor;}
-}
-th.small,td.small {width:10px;}
-th.medium,td.medium {width:100px;}
-th.large,td.large {width:55%;}
-.nowrap {white-space:nowrap;}
-td.right {float:none;text-align:right;}
-.collapse-bot {margin-bottom:0;}
-.bump {margin-bottom:15px;}
-.bump-down {margin-top:15px;}
-.bump-right {margin-right:22px;}
-.hide-last-child > *:last-child {display:none;}
-.or {text-align:center;}
-.small-input input {width:80px;}
-
-ul.plain {list-style-type:none;}
-
-.ProductDetails .qtyInput {display:inline;}
-
-#AjaxLoading {
-	box-shadow:0 0 10px rgba(0,0,0,.2);
-	position:fixed;
-	width:220px;
-	left:50%;top:15px;
-	text-align:center;
-	margin-left:-110px;
-	z-index:100;
-}
-
-
-.clearfix:after {
-     visibility: hidden;
-     display: block;
-     font-size: 0;
-     content: " ";
-     clear: both;
-     height: 0;
-     }
-.clearfix { display: inline-block; }
-/* start commented backslash hack \*/
-* html .clearfix { height: 1%; }
-.clearfix { display: block; }
-/* close commented backslash hack */
-
-.clear{clear:both;}
-
-	// FOLDED INFO (hidden info folded behind a link)
-	.folded-info-link {margin:5px 0;}
-	.folded-info-link:after {content:"\f0d7";font-family:"FontAwesome";padding-left:4px;}
-	.folded-info-link.open:after {content: "\f0d8";}	
-	.folded-info {display:none;}
-
-// PAGESMENU_DROP
-.HasSubMenu { @extend .has-dropdown; }
-
-// MEDIA QUERIES
-@media only screen and (max-width: 940px) {	
-	.responsive { // for responsive toggle
-
-	// MAIN CAROUSEL
-	.orbit .button { display:inline; }
-	
-	.top-bar {
-		.categories .category-list > li > a,
-		ul > li a:not(.button) {padding:0 12px;}
-		
-		.categories .category-list > li.has-dropdown > a,
-		ul > li.has-dropdown a:not(.button) {
-			padding-right:24px;
-		}
-		
-		ul > li.has-dropdown a:after,
-		ul > li.HasSubMenu a:after {
-			border-width:4px;
-			margin-right:8px;
-		}
-	}
-	
-	} // responsive toggle
-}
-
-@media only screen and (max-width: $topBarBreakPoint) {
-	.responsive { // for responsive toggle
-
-	// TOP NAVIGATION
-	.top-bar {
-		& > ul{height:$topBarHeight;}
-		&.expanded {height:inherit;}
-		li.name {display:block;}
-		.home span {display:inline;}		
-	}
-	
-	.dropdown li {min-height:0 !important;}
-
-	.top-bar .categories-mega,
-	.top-bar .categories-top {
-		&.left > ul,
-		&.right > ul {
-			float:none;width:100%;
-			margin-bottom:0;
-			& > li {
-				display:block;
-				float:none;
-				margin:0 !important;
-			}
-			& > li.has-dropdown,
-			& > li.HasSubMenu {
-				.dropdown {
-					left: 100% !important;
-					right: auto !important;
-					top: 0;
-				}
-			}
-		}
-	}
-	
-	// PRODUCT-GRID
-	.page .product-grid,
-	.nine .product-grid,
-	.six .product-grid {
-		li,.ProductImage a {text-align:center;width:$prodWidthTablet;}
-		li:nth-child(#{$prodsInRow}n+#{$prodsInRow}) {margin-right:$prodMargin;}
-		li:nth-child(#{$prodsInRow}n+1) {clear:none;}
-		li:nth-child(#{$prodsInRowTablet}n+#{$prodsInRowTablet}) {margin-right:0;}
-		li:nth-child(#{$prodsInRowTablet}n+1) {clear:left;}
-		
-		h5 {min-height:40px;}
-	}
-	
-	// PRODUCT-LIST
-	.page .product-list {
-		table.header {display:none;}
-		.qty-label {display:block;}
-		.IndividualPrice {display:none;}
-	}
-	
-	} // responsive toggle
-}
-
-@media only screen and (max-width: $topBarBreakPoint) {
-	.responsive { // for responsive toggle
-	
-	// MAIN CAROUSEL
-	.orbit {
-		.slide-heading {font-size:30px;}
-		.slide-text {font-size:15px;}
-		.button {display:none;}
-	}
-	
-	.or {display:block;}
-	
-	// PRODUCT DETAILS
-	.Label {text-align:left;}
-	.row form .row .columns.Label {padding-left:20px;}
-	.Value,.row form .DetailRow .Value {padding:0 15px;}
-	
-	// FORMS
-	form {
-		dt,dd {float:none;margin:0;text-align:left;width:auto;}
-	}
-	label.inline {margin:0;}
-	
-	// CART PAGE
-	.CartThumb img {max-height:45px;box-shadow:0 0 1px rgba(0,0,0,.4);}
-	.cart-header .three {position:static;bottom:20px;right:0;}
-	
-	// iMODAL
-	#ModalContainer {
-		left:1% !important;
-		margin:0 !important;
-		top:15% !important;
-		width:98% !important;		
-	}
-	
-	} // responsive toggle
-}
-
-@media only screen and (max-width: 480px) {
-	.responsive { // for responsive toggle
-
-	// HEADER
-	.logo {
-		line-height:inherit;
-		margin:5px 0;
-		text-align:center;
-	}
-	.topmenu-header {text-align:center;}	
-	
-	// MAIN CAROUSEL
-	.orbit {
-		.slide-heading {
-			font-size: 14px !important;
-			text-align: left;
-		}
-		.slide-text {
-			font-size: 12px !important;
-			text-align: left;
-		}
-	}
-	
-	// PRODUCT-LIST
-	.page .product-list {
-		table.header {display:none;}
-		.ProductImage {
-			display:table;
-			float:none;
-			width:100%;
-		}
-		.ProductDetails {
-			padding-left:0;
-			float:none;width:auto;
-			h5,.row {float:none;width:auto;}
-			.CustomizeItemLink {float:right;}
-		}
-		.qty-label {display:block;}
-		.IndividualPrice {display:none;}
-		.productAttributes {text-align:left;}
-	}
-	
-	// PRODUCT-GRID
-	.page .product-grid,
-	.nine .product-grid,
-	.six .product-grid {
-		li,.ProductImage a {float:none;text-align:center;margin-right:0;width:auto;}
-		h5 {min-height:40px;}
-	}
-
-/*	// PRODUCT PAGE 
-	.clearing-assembled.clearing-blackout{display:none;}*/
-	
-	} // responsive toggle
-}
-
-
-
-
-
-/* REACTIVE THEME */
-
-// VARIABLES
-$headerGutter: 40px;
-
-$menuBgColor: #111;
-$menuBgHoverColor: rgb(38,38,38);//rgba(255,255,255,.08);
-$menuFontColor: #fff;
-
-$searchBarBgColor: #111;
-
-$menuIconOpen: "\f107";
-$menuIconClosed: "\f106";
-
-$footerBgColor: #EBEBEB;
-$footerFontColor: #898989;
-$footerSubtleFontColor: #A3A2A2;
-
-/* .on-sale-badge {display:none !important;} */
-.cart-count {display:none;}
-
-// TOP MENU
-.account.page .top-menu li {
-	font-family:$headerFontFamily;
-}
-.top-menu {
-	font-family:$headerFontFamily;
-	position:relative;
-	margin-top:-5px;
-	float:left;
-	width:50px;
-
-	& > a {
-    	padding: 10px 15px;
-    	color:#41413B;
-    	display:block;
-    	font-size:21px;
-    	&.active {
-	    	background:$menuBgColor;
-	    	color: $menuFontColor;
-    	}
-    }
-	& > ul {
-		background:$menuBgColor;
-		position:absolute;
-		top:45px; left:0;
-		display:none;
-		padding:20px 25px;
-		z-index:100;
-		
-		width:250px;
-		
-		i { margin-right:12px; }
-		li {
-			display:block;
-			margin-bottom:8px;
-		}
-		a {
-			color:$menuFontColor;
-			text-transform:uppercase;
-		}
-	}
-}
-
-.account-link,
-.store-credit {
-	border-top:1px solid #3E3E3E;
-	padding-top:15px;
-	margin-top:15px;
-}
-
-.store-credit {
-	color:#444;
-	font-family:$bodyFontFamily;
-	font-size:13px;
-	padding-bottom:10px;
-}
-
-// CATEGORIES MENU
-.main-menu {
-	clear:both;
-	float:left;
-	width:100%;
-	
-	& > ul {
-		margin:0;
-		display:none;
-	}
-}
-
-.toggleMenu {
-	color:$menuBgColor;
-    display: none;
-    padding: 10px 15px;
-    float:right;
-    text-transform:uppercase;
-    font-weight:bold;
-    .icon-reorder {
-	    color:$menuBgColor;
-		font-size:21px;
-		position:relative;
-		top:2px;
-	}
-	span {
-		font-size:15px;
-		margin-right:5px;
-	}
-}
-.toggleMenu:hover {
-	color:$menuBgColor;
-}
-.toggleMenu.active {
-	background: $menuBgColor;
-	color:$menuFontColor;
-	padding-bottom:200px;
-	.icon-reorder {
-		color: $menuFontColor;
-	}
-}
-.nav {
-	& > li {display:none !important;}
-	& > ul {
-		text-align:center;
-		list-style: none;
-		*zoom: 1;
-		
-		i { margin-right:12px; }
-		& > li {
-			float:left;
-			& > .parent {
-				background-repeat: no-repeat;
-				background-position: right;
-			}
-			& > a {
-				display: block;
-			}
-		}
-		& > li.hover > ul {
-		    left: 0;
-		}
-	}
-	& > ul:before,
-	& > ul:after {
-	    content: " "; 
-	    display: table; 
-	}
-	& > ul:after { clear: both; }
-	
-	li { 
-		position: relative; 
-		ul {
-		    position: absolute;
-		    left: -9999px;
-		}
-		li.hover > ul {
-		    left: 100%;
-		    top:0;
-		}
-		li a {
-			letter-spacing:1px;
-			font-size:13px;
-			color:$menuFontColor;
-		    display: block;
-		    position: relative;
-		    z-index:100;
-		}
-		li li a {
-		    z-index:200;
-		}
-	}
-	ul {
-		a,div {
-			color:#41413b;
-			font-size:14px;
-			font-family:$headerFontFamily;
-			text-transform:uppercase;
-		}
-		& > li > div,a {
-		    padding: 5px 20px;
-		}
-		li > span {padding: 5px 20px; display:block;}
-		ul {
-		    list-style: none;
-		    width: 210px;
-		    z-index:100;
-		    margin:0;
-		    text-align:left;
-		    padding-top:20px;
-		    .parent:after {
-				content: "\f107";
-				font-family:'FontAwesome';
-				float:right;
-			}
-		    li { background:$menuBgColor; }
-		    ul {
-			    padding-top:0;
-		    }
-	    }
-	}	
-}
-
-
-
-// LARGE MENU ONLY
-@media screen and (min-width: $topBarBreakPoint+1 ) {
-	.logo-container {
-		margin-bottom:$headerGutter/2;
-	}
-	
-	.main-menu {
-		border-top:1px solid #EDEDED;
-		border-bottom:1px solid #EDEDED;
-		padding:15px 0 14px;
-		margin-top:0;
-		margin-bottom:15px;
-	}
-	
-	.nav > ul {		
-		& > li {
-			float:none;
-			display:inline-block;
-			& > a {
-				border-right:1px solid #74746F;
-				line-height:4px;
-			}
-			& > a.parent-expand-link {
-				border-right: 0;
-				padding: 0; 
-			}
-		}
-		& > li:last-child > a { border:0; }
-	}
-	
-	.nav.hide-pages-desktop {
-		.last-category-menu-link > a {border:0;}
-		.page-menu-link {
-			display:none !important;
-		}
-	}
-	
-	.nav ul ul:after {
-		content:"";
-		width: 0; 
-		height: 0; 
-		border-left: 8px solid transparent;
-		border-right: 8px solid transparent;
-		border-bottom: 8px solid $menuBgColor;
-		position:absolute;
-		top:12px;
-		left:40px;
-	}
-	
-	.nav ul ul ul {
-		border-left:1px solid #2F2F2F;
-	}
-	
-	.nav ul ul ul:after {content:"";display:none;}
-}
-
-/* DUPLICATED FROM ABOVE MEDIA QUERY FOR RESPONSIVE TOGGLE */
-.responsive-off {
-	.logo-container {
-		margin-bottom:$headerGutter/2;
-	}
-	
-	.main-menu {
-		border-top:1px solid #EDEDED;
-		border-bottom:1px solid #EDEDED;
-		padding:15px 0 14px;
-		margin-top:0;
-		margin-bottom:15px;
-	}
-	
-	.nav > ul {		
-		& > li {
-			float:none;
-			display:inline-block;
-			& > a {
-				border-right:1px solid #74746F;
-				line-height:4px;
-			}
-			& > a.parent-expand-link {
-				border-right: 0;
-				padding: 0; 
-			}
-		}
-		& > li:last-child > a { border:0; }
-	}
-	
-	.nav.hide-pages-desktop {
-		.last-category-menu-link > a {border:0;}
-		.page-menu-link {
-			display:none !important;
-		}
-	}
-	
-	.nav ul ul:after {
-		content:"";
-		width: 0; 
-		height: 0; 
-		border-left: 8px solid transparent;
-		border-right: 8px solid transparent;
-		border-bottom: 8px solid $menuBgColor;
-		position:absolute;
-		top:12px;
-		left:40px;
-	}
-	
-	.nav ul ul ul {
-		border-left:1px solid #2F2F2F;
-	}
-	
-	.nav ul ul ul:after {content:"";display:none;}
-} /* end non-responsive */
-
-// SMALL MENU ONLY
-@media screen and (max-width: $topBarBreakPoint) {
-	.responsive { // for responsive toggle
-
-	.account-links {display:none;}
-	
-	.main-menu {
-		margin-bottom:15px;
-	}
-
-    .nav > ul {
-	    text-align:left;
-	    padding:10px 0;
-	    background:#111;
-	    margin-top:42px;
-	    
-		.parent-expand-link {
-			position:absolute;
-			right:0;
-			top:0;
-		}
-		.parent-expand-link:before {
-			content: $menuIconOpen;
-			color:#fff;
-			font-size:16px;
-			font-family:'FontAwesome';
-		}
-		
-		.hover > .parent-expand-link:before {
-			content: $menuIconClosed;
-		}
-		
-		.parent:after {
-			content: "" !important;
-		}
-		
-		& > li {
-			float: none;
-	        a,div {
-		    	color:#fff;
-	        }
-		}
-		
-		// CURRENCY SELECTOR FOR MOBILE
-		#currency-chooser .currencies {
-			position:static;
-			width:100%;
-			border:1px solid #fff;
-			a {
-				color:$txtColor;
-				text-transform:none;
-			}
-		}
-    }
-
-    .nav > ul > li > .parent {
-        background-position: 95% 50%;
-    }
-    .nav li li .parent {
-        background-repeat: no-repeat;
-        background-position: 95% 50%;
-    }
-    
-    .hover .parent-category-link {display:block;}
-    
-    .nav ul ul {
-        display: block;
-        width: 100%;
-        padding:0;
-        li { background:$menuBgHoverColor; padding-left:8px; }
-    }
-   .nav > ul > li.hover > ul,
-   .nav li li.hover > ul {
-        position: static;
-    }
-    
-    .nav .page-menu-link {
-    	border-top:1px solid #3E3E3E;
-		padding-top:15px;
-		margin-top:15px;
-    }
-    
-	.nav .page-menu-link:first-child { 
-		border:0;
-		padding-top:0;
-		margin-top:0;
-	}  
-    
-    .nav .page-menu-link ~ .page-menu-link {
-	    border: none;
-	    margin:0;
-	    padding:0;
-	}
-	
-	} // responsive toggle
-}
-
-/* FRONT PAGE CAROUSEL */
-
-.orbit-wrapper .slider-nav span {
-	width:23px;
-	height:23px;
-	opacity:0;
-	@include transition(opacity, .3s, ease-in-out);
-}
-
-.orbit-wrapper:hover .slider-nav span {
-	opacity:1;
-}
-
-.orbit-wrapper .timer {display:none;}
-
-ul.orbit-bullets {
-	bottom:5px;
-	right:20px;
-	left:auto;
-	li {
-		background-image:none;
-		background:#fff;
-		width:12px;height:12px;
-		border-radius:15px;
-		display:block;
-		border:1px solid rgba(#000,.15);
-	}
-	li.active {
-		background:$mainColor;
-	}
-}
-
-@media only screen and (max-width:480px) {
-	.responsive { // for responsive toggle
-
-	.toggleMenu {
-		margin-left: -15px;
-	}
-	
-	/* MOBILE SIZE CAROUSEL */
-
-	/* adjust rows for mobile */
-	.default.page {
-		section > .row {
-			margin:0;
-			& > .columns {padding:0;}
-			.row .details-row {margin:0;}
-		}
-	}
-	
-	.row .product-images {
-		padding:0;width:100%;
-		& > .row {
-			margin:0;
-			& > .columns {margin:0;padding:0;}
-		}
-	}
-	.row .product-details {
-		padding:0;
-		width:100%;
-		float:left;
-	}
-	
-	.qty-field {
-		line-height: 2.3em;
-	}
-	
-	.remove-btn {
-		text-align: center;
-	}
-
-	ul.product-thumbs {
-		margin-top:15px;
-		position:relative;
-		left:0;
-	}
-
-	.thumb-nav-wrap {
-		& > ul {
-			li:first-child {margin:0;}
-			li {
-				list-style:none;
-				display:inline-block;
-				margin-left:10px;
-				outline:0 !important;
-				& > a {
-					background:#CDCBCC;
-					border-radius:20px;
-					font-size:0;
-					overflow:hidden;
-					text-indent:-999em;
-					width:12px;
-					height:12px;
-					display:block;
-					outline:0 !important;
-					&:hover {
-						background:$secondaryColor;
-					}
-					&.active {
-						background:$mainColor;
-					}
-				}
-			}
-		}
-		& > a {
-			display:none;
-		}
-	}
-	
-	.mobile-next,.mobile-prev {
-		position:absolute;
-		width:23px;
-		top:50%;
-		margin-top:-12px;
-		z-index:100;
-		background-repeat:no-repeat;
-		i {
-			display:none;
-		}
-	}
-	.mobile-next {right:0;background-image:url('../images/foundation/orbit/right-arrow.png');}
-	.mobile-prev {
-		left:0;
-		display:none;
-		background-image:url('../images/foundation/orbit/left-arrow.png');
-	}
-	
-	.main-image {display:none;}
-	
-	.thumb-wrap {
-		position:relative;
-		overflow:hidden;
-	}
-	
-	ul.product-thumbs {
-		text-align:left;
-		& > li {
-			margin:0;
-			
-			& > a {
-				width:100%;
-				border:0;
-				.thumb-image {
-					max-width:none;
-					height:auto;
-					width:auto;
-				}
-			}
-		}
-	}
-	
-	} // responsive toggle
-}
-
-/* DESKTOP SIZE CAROUSEL */
-@media only screen and (min-width:481px) {
-	.thumb-nav-wrap {
-		position:relative;
-		& > ul {display:none;}
-		& > a {
-			position:absolute;
-			top:50%;
-			margin-top:-11px;
-			color:#101010;
-			font-size:18px;
-		}
-		& > a.prev {left:-10px;}
-		& > a.next {right:-10px;}	
-	}
-	
-	.thumb-wrap {
-		overflow:hidden;
-	}
-	
-	.mobile-next,
-	.mobile-prev {display:none !important;}
-	
-	ul.product-thumbs {
-		margin-top:15px;
-		position:relative;
-		left:0;
-		& > li {
-			width:25%;
-			margin:0;
-			&.active {
-				box-shadow:0 3px 0 rgba($mainColor,1);
-			}
-			& > a {
-				width:100%;
-				border:0;
-			}
-		}
-	}
-}
-
-/* DUPLICATED FROM ABOVE MEDIA QUERY FOR RESPONSIVE TOGGLE */
-.responsive-off {
-	.thumb-nav-wrap {
-		position:relative;
-		& > ul {display:none;}
-		& > a {
-			position:absolute;
-			top:50%;
-			margin-top:-11px;
-			color:#101010;
-			font-size:18px;
-		}
-		& > a.prev {left:-10px;}
-		& > a.next {right:-10px;}	
-	}
-	
-	.thumb-wrap {
-		overflow:hidden;
-	}
-	
-	.mobile-next,
-	.mobile-prev {display:none !important;}
-	
-	ul.product-thumbs {
-		margin-top:15px;
-		position:relative;
-		left:0;
-		& > li {
-			width:25%;
-			margin:0;
-			&.active {
-				box-shadow:0 3px 0 rgba($mainColor,1);
-			}
-			& > a {
-				width:100%;
-				border:0;
-			}
-		}
-	}
-} /* end non-responsive */
-
-body {
-	font-size:16px;
-	line-height:$bodyLineHeight;
-	font-family:$bodyFontFamily;
-}
-
-header {
-	position:relative;
-}
-
-section.main {
-	clear:both;
-}
-
-.wrap {
-	border-top:4px solid #111;
-	overflow:hidden;
-}
-
-// HEADINGS
-h1,h2,h3,h4,h5,h6 {
-	margin-bottom:25px;
-	text-transform:uppercase;
-	letter-spacing:2px;
-}
-h3,h4,h5 {letter-spacing:1px;}
-
-h1 {
-	font-size:22px;
-	color:$mainColor;
-}
-h2 {
-	font-size:18px;
-}
-
-h3 {
-	font-size:20px;
-	border-bottom:3px solid $secondaryColor;
-	text-align:center;
-	span {
-		padding-top:10px;
-		background: #fff;
-		padding: 0 10px;
-		position: relative;
-		top: 23px;
-	}
-}
-
-.product.page h3 span {top:14px;}
-
-h4 {font-size:14px;}
-h5 {font-size:13px;}
-h6 {
-	font-size:11px;
-	letter-spacing:normal;
-}
-
-.default h3 {
-	border-top:0;
-	padding-top:0;
-	padding-bottom:10px;
-}
-
-.panel h3 {
-	border:0;
-	padding-top:0;
-}
-
-.category h1 {
-	padding-bottom:15px;
-	border-bottom:2px solid #EBEBEB;
-	margin-bottom:20px;
-}
-
-.subheader {font-weight:400;}
-
-// HEADER
-header {
-	margin:0 auto;
-	padding:$headerGutter $columnGutter/2 20px;
-	max-width:100%;
-	width:$rowWidth;
-}
-
-.logo-container {
-	min-height:40px;
-}
-.logo {
-	font-family:$headerFontFamily;
-	letter-spacing:1px;
-	font-weight:normal;
-	line-height:inherit;
-	text-align:left;
-	margin:0;
-	width:50%;
-	float:left;
-	position:relative;
-	a {color:$logoTextColor;}
-}
-
-.info-col {
-	float:right;
-}
-
-.search-form {
-	position:relative;
-	margin:0 0 0 15px;
-	float:right;
-	input {
-		border:0;
-		background:none !important;
-		box-shadow:none;
-		border-radius:0;
-		border-top:1px solid #EDEDED;
-		border-bottom:1px solid #EDEDED;
-		padding-right:5px;
-		margin:0;
-		width:160px;
-		&:focus {
-			background:none;
-			border:1px solid #EDEDED;
-			width:180px;
-			outline:0;
-		}
-	}
-	button {
-		background:none;
-		position:absolute;
-		border:0;
-		right:0;
-		top:0px;
-		font-size:15px;
-		line-height:32px;
-		padding:0 5px;
-		margin:0;
-	}
-}
-
-.SearchSorting span {
-	text-align: right;
-	display: block;
-	padding: 0 10% 0 0;
-	line-height: 2.2em;
-}
-
-.cart-link {
-	float:none;
-	padding:0 !important;
-	a {
-		position:relative;
-		span {
-			color:$mainColor;
-			font-size:12px;
-			line-height:12px;
-			font-weight:bold;
-			position:absolute;
-			top:-13px;
-			left:0;
-			width:100%;
-			font-family:$bodyFontFamily;
-		}
-	}
-}
-
-.account-links {
-	position:absolute;
-	top:5px;
-	right:15px;
-	a,div {
-		font-size:12px;
-		color:$accountLinksColor;
-	}
-	.inline-list > li {
-		display:inline-block;
-		float:none;
-	}
-}
-
-// BUTTONS
-.button {
-	background:$mainColor;
-	border:1px solid darken($mainColor, 12%);
-	border-radius:2px;
-	text-transform:uppercase;
-	font-weight:normal;
-	font-family:$bodyFontFamily;
-	box-shadow:none;
-	text-rendering:optimizeLegibility;
-	font-weight:400;
-	letter-spacing:1px;
-	line-height:1;
-}
-
-.checkout.page .strong.button {
-	background:$mainColor;
-	padding:10px 20px 11px;
-}
-
-a.button {font-weight:600;}
-input.button {font-weight:300;}
-.button:hover {
-	background:darken($mainColor, 12%);
-}
-.button:visited {
-	line-height:1;
-}
-
-.button.large {
-	font-size:14px;
-	padding:11px 30px;
-	border-radius:3px;
-}
-
-.button.white {
-	background:none;
-	border:0;
-}
-.button.white:hover,
-.button.white:active {background:none;}
-
-.button.postfix {
-	padding:0 6px;
-}
-
-footer .button {
-	background:#424242;
-	border:1px solid #2F2F2F;
-}
-footer .button:hover {
-	background:#2F2F2F;
-}
-
-// ALERT BOXES
-.alert-box {
-	p {margin-bottom:10px;}
-	p:last-child {margin-bottom:0;}
-	a {
-		text-decoration:underline;
-	}
-}
-
-.alert-box:not(.secondary) {
-	&,p,div,a {
-		@include contrast-color($mainColor);
-	}
-}
-
-.alert-box.secondary {
-	&,p,div,a {
-		@include contrast-color($secondaryColor);
-	}
-}
-
-// CART PAGE
-.cart .product-list > .header {
-	border:0;
-}
-
-.cart .product-list .ProductDetails {
-	text-align:left;
-}
-
-table thead tr th {
-	font-weight:normal;
-	padding:12px 10px 13px;
-}
-
-table {border:0;}
-table tfoot {background:none;}
-
-.cart table.footer tr td {
-	border-bottom:1px solid #C5C5C5;
-}
-
-table thead tr th, table tfoot tr td {
-	text-transform:uppercase;
-	font-family:$bodyFontFamily;
-}
-
-.cart .ProductPrice, .IndividualPrice {
-	font-family:$headerFontFamily;
-	font-size:14px;
-	line-height:32px;
-}
-
-.coupon-box-row {
-	.panel {background:#fff;}
-	.button {
-		background:#262626;
-		border:#262626;
-	}
-	h4 {
-		color:#434343;
-	}
-}
-
-.CartRemoveLink {
-	display:block;
-	margin:3px 0 0 10px;
-	.icon-remove {
-		background:#363636;
-		padding:1px 2px;
-		border-radius:20px;
-		color:#fff;
-		font-size:10.5px;
-		font-weight:normal;
-	}
-}
-
-.cart-contents {
-	.PayPalExpressCheckout p:first-child {float:none !important;}
-}
-
-.EstimateShipping{
-	select{
-		height:32px;
-		border:0;
-		width:100%;
-		padding:7px;
-		display:block;
-	}
-	a.secondary.button{height:28px;}
-	.EstimateShippingButtons input.button{
-		padding:6px 20px;
-		height:28px;
-	}
-}
-
-.product-list > ul > li {
-	height:auto !important;
-}
-.page .product-list .ProductName {
-	float:left;width:55%;
-	font-family:$headerFontFamily;
-	font-weight:normal;
-	font-size:14px;
-	text-align:left;
-	line-height:32px;
-	a {
-		color:#242424;
-	}
-}
-
-.page .product-grid.List {
-	.ProductPrice {
-		float:left;
-		width:20%;
-		text-align:left;
-		line-height:32px;
-		font-weight:bold;
-		font-size:18px;
-	}
-	.ProductQty,
-	.ProductDescription {
-		display: block;
-		clear: both;
-	}	
-	.ProductActionAdd {
-		display: inline-block;
-		line-height: 32px;
-		width: 25%;
-		text-align: right;
-		margin: 0;
-		white-space: nowrap;
-	}	
-}
-
-.page .product-list .GiftCertificateName {
-	width:30%;
-	padding-right:30px;
-}
-
-li.GiftCertificate {
-	.ProductName.GiftCertificateName a {color:$mainColor;}
-	.gift-for {
-		line-height:32px;
-		margin-top:7px;
-		display:block;
-	}
-	padding-bottom:30px;
-}
-
-.GiftCertificate .button-group li {
-	height:auto !important;
-	width:auto !important;
-}
-
-.EstimateShipping.panel {
-	background:#ebebeb;
-	border-color:#C5C5C5;
-}
-
-.CustomizeItemLink {margin-right:15px;}
-
-h3#ModalTitle.gift-wrapping {margin-bottom:15px;}
-
-#ModalContent {
-	padding:0 25px;
-}
-
-.WrappingOptions {
-	padding-top:10px;
-	clear:both;
-}
-
-// CHECKOUT PAGE
-.express.checkout {
-	#CheckoutStepBillingAddress,#CheckoutStepShippingAddress {
-		input[type="text"], input[type="password"], input[type="date"], input[type="datetime"], input[type="email"], input[type="number"], input[type="search"], input[type="tel"], input[type="time"], input[type="url"], textarea,select {
-			width:300px;
-			max-width:100%;
-		}
-		#FormField_13, #FormField_23 {width:300px !important;}
-	}
-
-	#CheckoutStepBillingAddress label {
-		text-transform:none;
-		font-family:$headerFontFamily;
-		font-weight:normal;
-	}
-
-	.ExpressCheckoutTitle h4 {color:#262626;}
-
-	label {
-		text-transform:uppercase;
-		letter-spacing:1px;
-		font-weight:300;
-	}
-	
-	.radio-list label {
-		text-transform:none;
-		letter-spacing:normal;
-		font-weight:normal;
-	}
-
-	.button {
-		background:#424242;
-		border:1px solid #242424;
-		padding:6px 15px;
-		font-weight:300;
-	}
-	.secondary.button {
-		background:none;
-		border:0;
-		color:$mainColor;
-		font-family:$headerFontFamily;
-		font-weight:normal;
-		text-transform:none;
-		font-size:14px;
-	}
-	.panel {
-		border:0;
-		position:relative;
-		padding:0;
-		h4 {
-			line-height:48px;
-			font-weight:bold;
-			padding-left:80px;
-		}
-		.button {
-			background:none;
-			border:0;
-			color:$mainColor;
-		}
-		.button.small {
-			padding:0;
-			line-height:48px;
-			font-size:12px;
-			letter-spacing:1px;
-			margin-right:20px;
-		}
-		.button.small:hover,
-		.button.small:active,
-		.button.small:visited,
-		.button.small:focus {
-			text-decoration:underline;
-			border:0;
-			background:none;
-			box-shadow:none;
-		}
-		
-		.ExpressCheckoutCompletedContent {
-			font-family:$headerFontFamily;
-			margin-left:20px;
-			text-transform:none;
-			font-weight:normal;
-			font-style:italic;
-		}
-	}
-	.NewsletterPrompt label {text-transform:none;}
-}
-.ExpressCheckoutContent {
-	padding:20px 10px;
-}
-
-.ExpressCheckoutContent .ProductPrice {display:inline;}
-
-.step-number {
-	background:$mainColor;
-	color:#fff;
-	position:absolute;
-	top:0;
-	left:0;
-	width:48px;
-	text-align:center;
-	line-height:48px;
-	font-weight:bold;
-	font-family:$bodyFontFamily;
-}
-
-// FORMS
-input[type="text"],
-input[type="password"],
-input[type="date"],
-input[type="datetime"],
-input[type="email"],
-input[type="number"],
-input[type="search"],
-input[type="tel"],
-input[type="time"],
-input[type="url"],
-textarea {
-	background:#F6F6F6;
-	font-family:$bodyFontFamily;
-}
-
-.field-xsmall {
-	padding:7px;
-	height:32px;
-	border:1px solid #ccc;
-	background:#fff;
-	width:auto !important;
-}
-
-.checkgiftcertificate-button {
-	white-space:nowrap;
-}
-.checkgiftcertificate-button i {
-	display:none;
-}
-
-.field-group + label {
-	display:inline-block;
-}
-
-// BODY
-p {
-	margin-bottom:20px;
-	font-size:14px;
-	font-family:$bodyFontFamily;
-	line-height:1.5;
-	color:rgb(66,66,66);
-}
-
-p.intro {
-	font-size:18px;
-	font-style:italic;
-	font-family:$bodyFontFamily;
-	color:rgb(66,66,66);
-}
-
-blockquote {
-	font-size:14px;
-	line-height:1.5;
-	margin-bottom:25px;
-	font-family:$bodyFontFamily;
-	text-transform:uppercase;
-	letter-spacing:0px;
-	text-indent:0px;
-	padding-left:20px;
-	padding-right:20px;
-	border-left:solid;
-	border-color:rgb(219,219,219);
-}
-
-.QuickSearch {
-	box-shadow:0 0 3px rgba(0,0,0,.2);
-}
-
-// PRODUCT BOXES
-.product-grid {margin-bottom:20px;}
-.product-grid li {
-	box-shadow:none;
-	border-bottom:2px solid #EDEDED;
-}
-
-.ProductDetails {
-	color:#424242;
-	font-size:16px;
-	font-family:$bodyFontFamily;
-	text-align:center;
-}
-
-
-.ProductName {
-	display:block;
-	font-size:14px;
-	line-height:1.5;
-	a {color:#424242;}
-}
-li:hover > .ProductDetails > .ProductName a {color:$mainColor;}
-
-.ProductPrice {
-	font-size:14px;
-	display:block;
-	font-weight:normal;
-	color:#424242;
-	line-height:1.5;
-}
-
-.product.page .ProductPrice {
-	font-size:20px;
-	font-weight:bold;
-}
-
-.product-grid .ProductImage {
-	a {height:auto;}
-	position:relative;
-}
-
-.on-sale-badge {
-	background:rgba(175,0,0,.5);
-	font-family:$bodyFontFamily;
-	font-size:13px;
-	color:#fff;
-	width:0;
-	height:0;
-	text-align:center;
-	border-radius:300px;
-	position:absolute;
-	left:50%;
-	top:50%;
-	text-transform:uppercase;
-	letter-spacing:1px;
-	@include transition(all, 250ms, ease-in-out);
-}
-
-.ComparisonTable,.QuickSearch {
-	.on-sale-badge {display:none;}
-}
-
-// CATEGORY PAGE
-
-.product-grid {
-	.ProductActionAdd .button {
-		background:#424546;
-		border:1px solid #303334;
-	}
-}
-.subcat-grid {
-	padding-bottom:40px;
-	border-bottom:2px solid #EDEDED;
-	width:100%;
-}
-.subcat-grid li {
-	text-align:center;
-	padding-left:23px;
-	margin-left:22px;
-	margin-right:0;
-	position:relative;
-	
-	.vertical-divider {
-		border-left:1px solid rgba(136,136,133,.8);
-		position:absolute;
-		left:0;
-		top:50%;
-		margin-top:-18px;
-		height:12px;
-		display:block;
-	}
-	&:first-child {
-		border:0;
-		padding-left:0;
-		margin-left:0;
-		.vertical-divider {display:none;}
-	}
-	a {
-		color:#111;
-		text-transform:uppercase;
-		font-family:$bodyFontFamily;
-		font-weight:300;
-		letter-spacing:1px;
-	}
-	&:hover a {color:$mainColor;}
-	
-	.th {
-		margin-bottom:10px;
-		img {
-			border-radius:0;
-			border:0;
-			box-shadow:none;
-		}
-	}
-}
-
-.subcat-grid li {
-	width:20%;
-	padding:0 20px 20px;
-	margin:0;
-	text-align:center;
-	img {
-		display:inline-block;
-		max-width:100%;
-		max-height:none;
-	}
-	&:nth-child(5n+1) {
-		clear:both;
-	}
-}
-
-.inline-list.subcategory-list {
-	border-bottom:2px solid #EDEDED;
-	margin:0 1px 30px;
-	overflow:hidden;
-
-	a {
-		color:#111;
-		text-transform:uppercase;
-		font-family:$bodyFontFamily;
-		font-weight:300;
-		letter-spacing:1px;
-	}
-	a:hover {
-		color:$mainColor;
-	}
-}
-
-// CATEGORY PAGE SUB CATEGORIES
-.inline-list.dividers{
-	padding:0 0 20px;
-	li{
-		padding:0 22px 0 0;
-		border-left:0;
-		line-height:12px;
-		border-right:2px solid $secondaryColor;
-		margin:5px 22px 5px 0;
-		&:first-child{
-			border-right:2px solid $secondaryColor;
-			margin-left:0;
-			padding-left:0;
-		}
-		&:last-child{
-			border-right:0;
-			margin-right:0;
-		}
-	}
-}
-
-// RATING ICONS
-.ProductRating,
-.rating-stars,
-.show-reviews {
-	i {
-		font-size:12px;
-		letter-spacing:2px;
-		width:5.25em;
-	}
-	i:after {
-		color:rgba($ratingStarColor,.2);
-	}
-}
-.icon-rating-1:after  { content: "\f005\f005\f005\f005"; }
-.icon-rating-2:after  { content: "\f005\f005\f005"; }
-.icon-rating-3:after  { content: "\f005\f005"; }
-.icon-rating-4:after  { content: "\f005"; }
-
-.product-grid .ProductRating0 {display:none;}
-
-.ProductReviewForm label.inline {
-	line-height:20px;
-}
-
-.captcha-label {margin:5px 0 0;}
-
-#rating-stars .icon-star {font-size:18px;margin-right:10px;}
-#recaptcha_widget_div {border:0;padding-top:0;}
-
-// PRODUCT PAGE
-ul.product-thumbs li {
-	border:0;
-	&:hover {border:0;}
-}
-.singleImage ul.product-thumbs {text-align:center;}
-.singleImage > ul {display:none;}
-
-.product-images {
-	padding:0 35px;
-}
-
-.product-details {
-	margin-bottom:20px;
-	& > h1 {
-		margin-top:-5px;
-	}
-}
-
-.button.wishlist-button {
-	padding-left:0;
-	color:$mainColor;
-	text-transform:none;
-	outline:0 !important;
-	letter-spacing:normal;
-}
-.button.wishlist-button:hover {text-decoration:underline;}
-
-.RemoveFromWishlistForm {margin-top:5px;text-align:center;}
-
-#frmWishList {
-	position:relative;
-	margin-bottom:10px;
-}
-
-.main-image {
-	width:100%;
-}
-
-// vertically center product images
-.main-image-link {
-	display:table;
-	margin:auto;
-	.zoomie {
-		display:table-cell;
-		vertical-align:middle;
-	}
-}
-
-.SelectBox {
-	height:32px;
-	width:100%;
-	border:1px solid rgba(0,0,0,.1);
-}
-
-.dateselector {
-	display:inline-block;
-	select {
-		padding:7px;
-		height:32px;
-		background:#fff;
-		border:1px solid rgba(0,0,0,.2);
-	}
-}
-
-.AddToCartRow form .DetailRow {margin-bottom:15px;}
-.DetailRow {
-	clear:both;
-	overflow:hidden;
-	
-	.Label {
-		text-align:left;
-		float:left;
-		width:$formLabelWidthProduct;
-	}
-	.Value {
-		float:right;
-		width:$formValueWidthProduct;
-	}
-	&.NoLabelRow {
-		div.Label {display:none;}
-		div.Value {
-			float:left;
-			padding:0 15px;
-		}
-	}
-	&.RetailPrice {
-		margin-bottom:0;
-	}
-	&.BrandRow {
-		margin-bottom:10px;
-	}
-}
-
-.product.page {
-	.Label.column {width:auto;}
-	.Value.column {float:left;padding:0 15px;}
-	.InventoryLevel .Value {width:50%;}
-}
-
-.productAttributeList {
-	margin-bottom:25px;
-	.productAttributeLabel {
-		text-align:left;
-	}
-	.productAttributeValue {
-		float:left;
-		clear:left;
-		padding:0 0 0 15px;
-	}
-}
-
-.row .DetailRow .Label.column {
-	padding:0 15px;
-}
-
-.FoldingRow {
-	.columns > div {
-		padding-top:15px;
-		border-bottom:1px solid #DBDBDB;
-		display:none;
-	}
-
-	h4 {
-		cursor:pointer;
-		border-bottom:1px solid #DBDBDB;
-		padding-bottom:15px;
-		margin-bottom:0;
-	}
-	h4:after {
-		content:"\f077";
-		font-family:'FontAwesome';
-		float:right;
-	}
-
-	&.FoldingRowOpen {
-		h4 {
-			border:0;
-		}
-		h4:after {
-			content:"\f078";
-		}
-		.columns > div {
-			display:block;
-		}
-	}
-	
-	
-}
-
-.main .tabs-content {
-	min-height:0;
-}
-
-.tabs-content > li h2 {
-	border-top:1px solid #DBDBDB;
-	padding-top:25px;
-}
-.tabs-content > li:first-child h2 {border:0;}
-
-.BulkDiscountLink {
-	padding-top:20px;
-}
-
-// HOMEPAGE SLIDER
-.orbit {
-	text-align:center;
-	font-family:$bodyFontFamily;
-	.slide-content {
-		background:rgba($mainColor,.8);
-		width:33%;
-		left:0;top:0;
-		padding:50px 15px 0;
-		height:100%;
-		line-height:1;
-		@include transition(all, .3s, ease-in-out);
-	}
-	.slide-heading {
-		margin-bottom:15px;
-		text-transform:uppercase;
-		letter-spacing:2px;
-		text-shadow:none;
-		font-weight:normal;
-		display:block;		
-	}
-	.slide-text {
-		font-style:italic;
-		font-family:$bodyFontFamily;
-		text-shadow:none;
-		margin:15px 0;
-		display:block;
-	}
-	.button {
-		background:darken($mainColor,20%);
-		border-radius:3px;
-		text-transform:uppercase;
-		font-weight:normal;
-		display:inline-block;
-	}
-}
-
-// BREADCRUMBS
-ul.breadcrumbs {
-	background:none;
-	border:0;
-	padding-left:0;
-	text-transform:lowercase;
-	li:before {
-		content:">";
-		color:#66635E;
-		font-size:12px;
-	}
-	li {
-		padding-right:5px;
-		a,span {padding-left:5px;}
-	}
-	
-	li.current + li {
-		clear:both;
-		a {padding-left:0;}
-	}
-	
-	li.current + li:before {
-		content:"";
-	}
-}
-
-// FOOTER
-p.footer {
-	font-size:11px;
-	color:rgb(89,89,89);
-}
-
-header .social-links li {
-	margin-right:10px;	
-}
-
-footer ul.social-links {
-	float:none;
-}
-
-footer.main {
-	background:$footerBgColor;
-	color:$footerFontColor;
-	h4 {
-		border-top:1px solid rgba($footerSubtleFontColor,.5);
-		padding-top:10px;
-		margin-top:35px;
-		margin-bottom:10px;
-	}
-	a {
-		color:$footerFontColor;
-		font-family:$bodyFontFamily;
-	}
-	.social-links a {
-		color:#585858;
-		margin-right:15px;
-	}
-	.credit-links {
-		p,a {
-			color:$footerSubtleFontColor;
-			text-align:left;
-			font-size:11px;
-		}
-		p {
-			border-top:1px solid rgba($footerSubtleFontColor,.5);
-			padding-top:15px;
-			margin-top:15px;
-		}
-	}
-}
-
-// SEARCH PAGE
-.product-grid.List {
-	@extend .product-list;
-	
-	.ProductDetails {text-align:left;}
-	
-	// hide in productlist
-	.quickview.button,
-	.Rating,
-	.SalePrice:after {display:none;}
-}
-
-.search {
-	.CompareButtonContainer {float:left;}
-	ul.pagination {float:right;}
-}
-
-// QUICKVIEW
-
-#QuickView {
-	h3 {margin-bottom:10px;}
-}
-
-.quickview-description {
-	border-bottom:1px solid #DBDBDB;
-	padding-bottom:15px;
-	margin-bottom:20px;
-}
-
-.QuickViewThickBox {
-	.addToCart {
-		input {
-			margin-right:20px;
-			margin-bottom:10px;
-		}
-		.button.small {
-			padding-left:10px;padding-right:10px;
-		}
-	}
-	
-	.QuantityInput {line-height:32px;}
-	
-	& > h3 {
-		padding-bottom:25px;
-	}
-}
-
-.product-grid {
-	.qv-container {
-		width:100%;
-		position:absolute;
-		left:0;
-		top:40%;
-		text-align:center;
-	}
-	.quickview {
-		position:static;
-		margin:0;
-	}
-}
-
-// FAST CART
-.FastCartThickBox {
-	h2 {
-		margin:10px 0;
-		border-bottom:3px solid #dbdbdb;
-		padding-bottom:15px;
-	}
-	.cartSummary {
-		text-align:center;
-		.ProductPrice {
-			font-weight:bold;
-			border-bottom:1px solid #dbdbdb;
-			padding-bottom:20px;
-		}
-	}
-	h4 {margin-bottom:0;}
-	a.button {
-		white-space:nowrap;
-	}
-	
-	.prodName {
-		border:0;
-		padding:0;
-	}
-	.CheckoutButton a {
-		letter-spacing:0;
-		padding-left:12px;padding-right:12px;
-	}
-	
-	.Quantity {
-		margin-top:20px;
-		margin-bottom:0;
-	}
-	
-	.PayPalExpressCheckout p:first-child {float:none !important;}
-}
-.fast-cart-mobile {display:none;}
-
-// CHECKOUT PAGE
-.express.checkout {
-	.ExpressCheckoutBlock .panel {
-		padding:20px;
-		h4 { line-height:1; padding:0; }
-		h4.subheader {font-weight:normal;}
-	}
-	.ExpressCheckoutBlock > .panel {
-		padding:0;
-		h4 {
-			line-height:48px;
-			padding-left:80px;
-		}
-	}
-	label {letter-spacing:normal;}
-	
-	.checkout-confirm > .panel,
-	.CheckoutOrderComments {
-		background:#fff;
-		border:1px solid #DCDCDC;
-	}
-	.CheckoutOrderComments {
-		padding:0 15px;
- 	}
- 	.radio-list {
- 		margin-left:10px;
- 		label {display:block;}
- 	}
- 	.radio-list br {display:block;}
-}
-#CheckoutStepConfirmation .radio-list label {display:inline-block;}
-.payment-button-row {
-	border-top:1px solid #C6C6C6;
-	padding-top:20px;
-}
-.PaymentOptions h4 {font-weight:bold;}
-
-// ACCOUNT PAGES
-
-.account.page {
-	p,li {
-		font-size:15px;
-		font-family:$bodyFontFamily;
-	}
-	.OrderItemList li {font-size:14px;}
-	.nav-bar {
-		h4 {margin-bottom:15px;margin-top:0;}
-	}
-}
-
-.ShippingAddressList > li {
-	width:48.5%;
-	margin-right:3%;
-	overflow:auto;
-	min-height:250px;
-}
-.ShippingAddressList > li:nth-child(even) {margin-right:0;}
-.ShippingAddressList > li:nth-child(odd) {clear:left;}
-
-.create.account.page dd > select {width:100%;}
-
-.account{
-	h1{
-		border-bottom:2px solid #dbdbdb;
-		padding-bottom:20px;
-	}
-	h2{
-		border-bottom:1px solid #dbdbdb;
-		padding-bottom:20px;
-	}
-	h6 {
-		font-size:14px;
-		font-weight:700;
-	}
-	.icon-comment{
-		color:$mainColor;
-		font-size:20px;
-		padding-right:5px;
-	}
-}
-.account .nav-bar{
-	background:transparent;
-	li{
-		border:0 none;
-		line-height:30px;
-		text-transform:uppercase;
-		&:hover{
-			background:transparent;
-			a{
-				color:darken(#424242, 10%);
-			}
-		}
-		&:last-child{
-			border:0 none;
-		}
-		a{
-			color:#424242;
-			padding:0;
-		}
-	}
-}
-.account-home{
-	.BlockContent ul{
-		margin:0;
-		li{
-			list-style:none;
-			margin-bottom:20px;
-		}
-	}
-}
-
-td.actions {
-	min-width:175px;
-}
-
-.account-inbox{
-	section.main{
-		form{
-			dt{
-				line-height:25px;
-				margin:0;
-				text-align:left;
-				text-transform:uppercase;
-				width:100%;
-			}
-			dd{
-				float:left;
-				select,
-				input,
-				textarea{
-					margin-bottom:20px;
-				}
-			}
-		}
-		.AccountMessageList{
-			list-style:none;
-			margin-left:0;
-			h3{border-top:0 none;}
-			blockquote{
-				text-transform:none;
-				padding-left:10px;
-				margin-left:20px; 
-				border-left:1px solid #DBDBDB;
-			}
-			hr{margin:40px 0 35px;}
-		}
-	}
-}
-.AccountOrderStatusList{
-	li.panel{
-		padding:20px 0;
-		& > form{
-			margin-top:-1%;
-			&:first-child{padding-right:20px;}
-		}
-		h6{
-			border-bottom:1px solid #dbdbdb;
-			padding: 0 0 20px 20px;
-			margin-top:0;
-		}
-		& > div{
-			padding:0 20px;
-		}
-		.label,
-		.label.secondary{
-			background:none;
-			color:#505050;
-		}
-	}
-}
-
-.line {display:block;}
-.related-searches {
-	margin-bottom:20px;
-}
-
-#recaptcha_widget_div {
-	#recaptcha_area input[type="text"] {
-		display: inline-block;
-		height: auto;
-	}
-	.recaptcha_is_showing_audio embed { height: 0; width: 0; }
-	.recaptchatable, #recaptcha_area tr, #recaptcha_area td, #recaptcha_area th {
-		vertical-align:top !important;
-	}
-	
-	table tr td {
-		line-height:inherit;
-	}
-}
-
-small {
-	font-size:80%;
-}
-
-.wrap + iframe {display:none;}
-
-#rating-stars {
-	border:0;
-	margin-bottom:20px;
-}
-
-.reveal-modal {z-index:120;}
-
-#ModalTitle, .ModalTitle {
-	background:none;
-	border-left:0;border-right:0;
-}
-
-/* Out of Stock styling */ 
-/* Gave strike through to text of out of stock options except rectangle styled */
-label.outStock span.name {
-text-decoration: line-through;
-}
-.productOptionViewRectangle label.outStock span.name {
-text-decoration: none;
-}
-
-/* Gave out of stock lists and radio selects 50% transparency */
-.productOptionViewRadio .outStock span.name,
-.productOptionViewProductPickList .outStock span.name,
-.productOptionViewProductPickListWithImage .outStock span.name,
-.productOptionViewRectangle .option label.outStock {
-opacity: 0.5;
--ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
-*zoom: 1;
-}
-
-/* Made the container of the strike through image relative */
-.productOptionPickListSwatch .textureContainer,
-.productOptionPickListSwatch .swatchColours,
-.productOptionViewRectangle label {
-position: relative;
-}
-
-/* Gave out of stock swatches a strike through background image */
-.productOptionPickListSwatch .outStock .swatchColour:after,
-.productOptionPickListSwatch .outStock .thumbnail:after,
-.productOptionViewRectangle .outStock .name:after {
-position: absolute;
-top: 0;
-right: 0;
-bottom: 0;
-left: 0;
-background: url("../images/out-of-stock-bg.png") center no-repeat;
-z-index: 999;
-content: "";
-}
-
-// MEDIA QUERIES
-
-// LARGER THAN TABLET SIZE
-@media only screen and (min-width: $topBarBreakPoint + 1) {
-	.hide-size-desktop {display:none !important;}
-	
-	.account-links i {margin-right:4px;}
-	.account-link {border:0;padding:0;margin:0;}
-
-	.logo-container {
-		position:relative;
-		&:after {
-		  content: "";
-		  display: table;
-		  clear: both;
-		}
-	}
-	.info-col {
-		position:absolute;
-		top:50%;right:0;
-		margin-top:-16px;
-	}
-
-	.top-menu .store-credit {
-		display:none;
-	}
-	
-	.cart-action-buttons {
-		&>a {margin-right:10px;}
-	}
-	
-	.cart-button-col-top {
-		& > .button {
-			margin-left:20px;
-			position:relative;
-			top:12px;
-		}
-	}
-}
-
-/* DUPLICATED FROM ABOVE MEDIA QUERY FOR RESPONSIVE TOGGLE */
-.responsive-off {
-	.hide-size-desktop {display:none !important;}
-	
-	.account-links i {margin-right:4px;}
-	.account-link {border:0;padding:0;margin:0;}
-
-	.logo-container {
-		position:relative;
-		&:after {
-		  content: "";
-		  display: table;
-		  clear: both;
-		}
-	}
-	.info-col {
-		position:absolute;
-		top:50%;right:0;
-		margin-top:-16px;
-	}
-
-	.top-menu .store-credit {
-		display:none;
-	}
-	
-	.cart-action-buttons {
-		&>a {margin-right:10px;}
-	}
-	
-	.cart-button-col-top {
-		& > .button {
-			margin-left:20px;
-			position:relative;
-			top:12px;
-		}
-	}
-} /* end non-responsive */
-
-@media only screen and (max-width:1000px) {
-	.responsive { // for responsive toggle
-	
-	.checkgiftcertificate-button i {display:inline-block;}
-	.checkgiftcertificate-button span {display:none;}
-	
-	} // responsive toggle
-}
-
-// TABLET SIZE AND BELOW
-@media only screen and (max-width:$topBarBreakPoint) {
-	.responsive { // for responsive toggle
-
-	.logo {
-		font-size:22px;
-	}
-	
-	header .social-links {display:none;}
-	
-	.cart-header {
-		.PayPalExpressCheckout p:first-child {
-			float:left !important;
-			margin-right:20px;
-		}
-	}
-	
-	.wishlist-button {
-		position:static;
-	}
-	
-	.page header.main {
-		padding-top:65px;
-		padding-bottom:25px;
-	}
-	
-	.main-menu > a > i {font-size:18px;}
-	
-	.subcat-grid {
-		overflow:hidden;
-		& > ul > .left {float:left;}	
-	} 
-	
-	.search-form {
-		background:$searchBarBgColor;
-		padding:8px 10px;
-		position:absolute;
-		top:0;left:0;
-		width:100%;
-		margin:0;
-		input {
-			color:#fff;
-			border:0;
-			width:94%;
-			&:focus {
-				border:0;
-				width:94%;
-			}
-		}
-		button {
-			color:#fff;
-			line-height:45px;
-			margin-right:$columnGutter/2;
-		}
-	}
-	.info-col {width:auto;}
-	
-	.page .product-list  {
-		.ProductPrice {float:none;width:auto;}
-		.ProductActionAdd {
-			display: block;
-			clear: both;
-			margin: 10px 0;
-			width: auto;
-		}
-	}
-	
-	.main-image-link {
-		min-height:0 !important;
-	}	
-	
-	.overlay-link {
-		height: 75%;
-	}
-	
-	.ProductCompareButton,
-	.ProductCompareSelectedButton {display:none;}
-	
-	.AccountOrderStatusList {
-		li.panel>form:first-child {padding:0;}
-		form.bump-right {margin:0;}
-		h4 {margin-top:20px;}
-	}
-	
-	.express.checkout .panel h4 {
-		
-		.ExpressCheckoutCompletedContent {
-			display:none;
-		}
-	}
-	
-	.orbit .slide-content {width:45%;}
-	
-	select {
-		width:100%;
-	}
-	
-	// hide quickview
-	.product-grid .quickview {display:none !important;}
-	
-	} // responsive toggle
-}
-
-// ABOVE MOBILE SIZE
-@media only screen and (min-width:480px) {
-	ul.product-thumbs li:first-child:last-child {display:none;}
-}
-
-/* DUPLICATED FROM ABOVE MEDIA QUERY FOR RESPONSIVE TOGGLE */
-.responsive-off {
-	ul.product-thumbs li:first-child:last-child {display:none;}
-} /* end non-responsive */
-
-// MOBILE SIZE AND BELOW
-@media only screen and (max-width:480px) {
-	.responsive { // for responsive toggle
-	
-	/* HIDE PRODUCT TABS */
-	.tabs-content h3 {display:block !important;}
-	dl.tabs {display:none;}
-	ul.tabs-content>li {display:block !important;}
-	
-	#FastCart {
-		width:100%;
-		left:0;
-		margin-left:0;
-	}
-	
-	.fastCartBottom {display:none;}
-	
-	.fast-cart-mobile {
-		display:block;
-	}
-	.fast-cart-content {display:none;}
-	
-	.FastCartThickBox h2 {text-align:center;}
-	
-	.page .product-grid {
-		li {
-			width:49.5%;
-			float:left;
-		}
-	}
-	
-	ul.product-thumbs li:first-child:last-child {
-		width:auto !important;
-	}
-	
-	ul.product-thumbs li > a .thumb-image img {
-		width:100%;
-	}
-	
-	.inline-list.subcategory-list {
-		& > li {
-			float:none;
-			padding:0;
-			border:0;
-			margin:18px 0;
-			&:first-child {margin-left:0;border:0;}
-		}
-	}
-	
-	// HOME PAGE
-	.default.page {
-		.product-grid,
-		.recent-blogs {
-			padding-left:15px;
-			padding-right:15px;
-		}
-	}
-	
-	.orbit.with-bullets {
-		margin-bottom:0;
-		overflow: hidden;
-	}
-	.orbit-bullets {
-	    display: none;
-	}
-	.orbit {
-		overflow:visible;
-		.slide-content {
-			background:rgba(#000,.2);
-			padding:20px 15px 30px;
-			max-width:100%;
-			width:100%;
-			position:absolute;
-			.button {
-				font-size:10px;
-				padding:5px 10px;
-				float:left;
-			}
-		}
-	}
-	
-	// PRODUCT PAGE
-	.row .row.DetailRow .QuantityInput,.row .product-details {
-		padding:0 15px;
-	}
-	
-	.quickview.button {display:none;}
-	
-	.alert-box p {color:#fff;}
-	
-	// SEARCH PAGE
-	.search.page {
-		h1 {
-			padding-left:0;
-			padding-right:0;
-		}
-		section.main {
-			padding-left:15px;
-			padding-right:15px;
-		}
-		
-		.tabs dd:last-child {
-			a {
-				text-indent:-999em;
-				font-size:0;
-				overflow:hidden;
-			}
-			a:before {
-				content:"Info";
-				text-indent:0;
-				font-size:14px;
-			}
-		}
-	}
-
-	.page .product-list {
-		.ProductName {
-			float: none;
-			width: auto;
-		}
-		.ProductPrice {
-			text-align: left;
-		}
-	}
-
-	} // responsive toggle
-
-}
-
-@media only screen and (max-width:360px) {
-	.responsive { // for responsive toggle
-
-	.fast-cart-mobile .button-group.even.two-up li{
-		width:100%;
-		a {
-			padding-left:0;
-			padding-right:0;
-		}
-	}
-	
-	} // responsive toggle
-}
-
-/* temp styles for blog tags */
-ul.blog-tags {
-  list-style: none;
-  margin: 20px 0 5px 0;
-}
-
-ul.blog-tags li {
-  margin: 10px 10px 10px 0;
-  display: inline-block;
-}
-
-ul.blog-tags li {
-  padding: 7px 10px;
-  text-decoration: none;
-  text-transform: uppercase;
-  color: #000000;
-  background: #e8e8e8;
-  border: none;
-  border-radius: 3px;
-}
-
-// Currency Selector
-.CurrencyList {margin-bottom:5px;}
-.CurrencyList dl {
-	margin: 0;
-	padding: 0;
-}
-
-.CurrencyList dd {
-	padding: 0px;
-	margin: 0px;
-	border: 1px solid #dadada;
-	background-color: #F9F9F9;
-	clear: both;
-}
-
-.CurrencyList a {
-	padding: 0 3px 0 5px;
-	display: block;
-	line-height: 1.8;
-	text-decoration: none;
-	font-size: 11px;
-}
-
-.CurrencyList a.Sel {background:$secondaryColor;}
-
-.CurrencyList a:hover .Text {
-	text-decoration: underline;
-}
-
-.CurrencyList a .Flag {
-	margin-top: 1px;
-	display: block;
-	float: left;
-	width: 24px;
-	padding-right: 2px;
-	vertical-align: middle;
-}
-
-.CurrencyList a .Text {
-	display: block;
-	padding-left: 24px;
-}
-
-#currency-chooser .currency-info {
-	display:inline-block;
-	margin-right: 5px;
-}
-#change-currency {
-	text-decoration: underline;
-	cursor: pointer;
-	display:inline-block;
-}
-#currency-chooser .currencies {
-	background: $fillSubtle;
-	display: none;
-	margin-top: 5px;
-	padding: 10px;
-	position: absolute;
-	right: 0px;
-	z-index: 10;
-	width: 168px;
-	border:1px solid rgba(0,0,0,.1);
-}
-#currency-chooser .currencies p:first-child {margin-bottom:5px;}
-#currency-chooser .currencies:before {
-	width: 0;
-	height: 0;
-	border-left: 15px solid rgba(248, 248, 248, 0);
-	border-right: 15px solid rgba(248, 248, 248, 0);
-	border-bottom: 15px solid #f8f8f8;
-}
-#currency-chooser .currencies dd {
-	background: transparent;
-	border: #ededed solid 1px;
-}
-#currency-chooser .currencies dd a {
-	background: transparent;
-	border: none;
-	padding: 5px;
-}
-#currency-chooser .currencies dd a.Sel {
-	background: #fff;
-}
-
-.ComparisonTable img {width:100%;}
-
-// PRODUCT PAGE
-.AddThisButtonBox{
-	float:none;
-}
-
-
-// SproutCommerce Athletic Theme SCSS
-
-// HEADER
-.wrap{
-	border-top:4px solid $secondaryColor;
-}
-
-header.main{
-	padding:30px 15px 0;
-	.info-col{
-		.search-form{
-			input{
-				border:3px solid $secondaryColor;
-				padding-right:35px;
-				height:36px;
-				width:200px;
-				&:focus{
-					width:200px;
-				}
-			}
-			button{
-				background:$secondaryColor;
-				padding:0 7px 0 10px;
-				line-height:30px;
-				border-top:3px solid $secondaryColor;
-				border-right:3px solid $secondaryColor;
-				border-bottom:3px solid $secondaryColor;
-				i{color:#fff;}
-				&:hover{background:#DBDBDB;}
-			}
-		}
-	}
-	.main-menu{
-		margin-bottom:0px;
-		&.nav{
-			& > ul > li > a{
-				border-right-color:#fff;
-				font-size:16px;
-				font-weight:700;
-			}
-			ul{
-				a{
-					color:#fff;
-				}
-				ul{
-					li{background:$secondaryColor;}
-					&:after{border-bottom-color:#fff;}
-				}
-			}
-		}
-		.toggleMenu{
-			i{color:$secondaryColor;}
-			&.active{
-				background:$secondaryColor;
-				i{color:#fff;}
-			}
-		}
-	}
-}
-
-// CAROUSEL
-.orbit-wrapper{
-	width:100% !important;
-	display:inline-block !important;
-	float:left;
-	margin-bottom:1.3%;
-}
-.orbit{max-height:none;}
-.orbit.with-bullets{margin-bottom:0;}
-
-.orbit .slide-content{
-	background:none;
-	text-align:left;
-	padding:14% 30px 0;
-	width:66%;
-	max-width:none;
-}
-
-.orbit .slide-heading{
-	font-family: $headerFontFamily;
-	font-weight:bold;
-}
-.orbit .slide-text{
-	font-family: $bodyFontFamily;
-	font-style:normal;
-}
-.orbit .button{
-	background: $mainColor;
-	font-family: $headerFontFamily;
-	font-weight:bold;
-	font-size:17px;
-	border-radius:0;
-}
-
-// UTILITARIAN HOME
-.utilitarian-home{
-	// LARGE PROMO BOXES ROW
-	.promo-box-row{
-		clear:both;
-		overflow:hidden;
-		ul{
-			margin:0;
-			list-style:none;
-			li{
-				display:block;
-				float:left;
-				margin-right:1.4%;
-				width:32.4%;
-				&:last-child{margin-right:0;}
-			}
-		}
-	}
-}
-// PROMO BANNER
-.promo-banner{
-	display:block;
-	margin-bottom:0;
-	font-family:$headerFontFamily;
-	text-transform:uppercase;
-	ul{margin:0;}
-	li{
-		list-style:none;
-		display:block;
-		float:left;
-		padding:0px 15px;
-		margin:10px 0;
-		background:#fff;
-		width:33.3333%;
-		font-size:18px;
-		border-right:1px solid $secondaryColor;
-		text-align:center;
-		color:$secondaryColor;
-		&:last-child{border:0;}
-		i{padding-right:5px;}
-		span{
-			font-size:14px;
-		}
-		strong{
-			font-weight:700;
-			font-size:20px;
-		}
-		strong, span{
-			line-height:20px;
-			display:block;
-			letter-spacing:1.5px;
-		}
-	}
-}
-
-// FOOTER 
-footer.main{
-	background:$secondaryColor;
-	h4{
-		color:#fff;
-	}
-	.social-links a,
-	a{
-		color:#DBDBDB;
-	}
-}
-
-// GENERAL
-h3{border-bottom-color:#dbdbdb;}
-.button{
-	border-radius:0;
-	border:0 !important;
-	font-family: $headerFontFamily;
-	&.large{
-		border-radius:0;
-	}
-	&.secondary{color:#fff;}
-}
-div.alert-box{
-	border:0;
-	border-radius:0;
-	font-family: $headerFontFamily;
-	a.close{
-		opacity:.8;
-		top:0;
-	}
-	&.secondary{color:#fff;}
-}
-
-// MEDIA QUERIES
-
-@media only screen and (min-width:$topBarBreakPoint + 1){
-	.main-menu{
-		background:$secondaryColor;
-	}
-}
-
-/* DUPLICATED FROM ABOVE MEDIA QUERY FOR RESPONSIVE TOGGLE */
-.responsive-off {
-	.main-menu{
-		background:$secondaryColor;
-	}
-} /* end responsive */
-
-@media only screen and (max-width:$topBarBreakPoint + 1){
-	.responsive { // for responsive toggle
-
-	.promo-banner{
-		li{
-			width:50%;
-			&:nth-child(2){border-right:0;}
-			&:last-child{display:none;}
-		}
-	}
-	
-	} // responsive toggle
-}
-
-@media only screen and (max-width: $topBarBreakPoint){
-	.responsive { // for responsive toggle
-
-	header.main{
-		padding-top:50px;
-		padding-bottom:5px;
-		.info-col .search-form{
-			background:$secondaryColor;
-			input{
-				border:0;
-				width:94% !important;
-			}
-			button{
-				background:none;
-				border:0;
-				line-height:32px;
-				padding:0 8px;
-				margin:8px 15px 0 0;
-			}
-		}
-		.main-menu{
-			margin-top:-35px;
-			& > ul{
-				background:$secondaryColor;
-				.store-credit,
-				.account-link,
-				.page-menu-link{
-					color:#A3A2A2;
-					border-top-color:#A3A2A2;
-				}
-				ul{
-					background:rgba(255,255,255,.2);
-					li{background:transparent !important;}
-				}
-			}
-		}
-	}
-	
-	} // responsive toggle
-}
-
-@media only screen and (max-width:480px){
-	.responsive { // for responsive toggle
-
-	.utilitarian-home{
-		padding:0 15px;
-		.promo-box-row ul li{
-			float:none;
-			margin:0;
-			width:100%;
-			text-align:center;
-		}
-	}
-	.promo-banner li{
-		&:nth-child(2){display:none;}
-		&:first-child{
-			display:inline-block;
-			width:100%;
-			border:0;
-		}
-	}
-	
-	} // responsive toggle
-}
-
-// RESPONSIVE-OFF TOGGLE
-.responsive-off {
-	.wrap {min-width:1000px;}
-}
\ No newline at end of file
diff --git a/assets/css/scss/plugin/_font-awesome.scss b/assets/css/scss/plugin/_font-awesome.scss
deleted file mode 100644
index 7ede182..0000000
--- a/assets/css/scss/plugin/_font-awesome.scss
+++ /dev/null
@@ -1,1479 +0,0 @@
-/*!
- *  Font Awesome 3.2.1
- *  the iconic font designed for Bootstrap
- *  ------------------------------------------------------------------------------
- *  The full suite of pictographic icons, examples, and documentation can be
- *  found at http://fontawesome.io.  Stay up to date on Twitter at
- *  http://twitter.com/fontawesome.
- *
- *  License
- *  ------------------------------------------------------------------------------
- *  - The Font Awesome font is licensed under SIL OFL 1.1 -
- *    http://scripts.sil.org/OFL
- *  - Font Awesome CSS, LESS, and SASS files are licensed under MIT License -
- *    http://opensource.org/licenses/mit-license.html
- *  - Font Awesome documentation licensed under CC BY 3.0 -
- *    http://creativecommons.org/licenses/by/3.0/
- *  - Attribution is no longer required in Font Awesome 3.0, but much appreciated:
- *    "Font Awesome by Dave Gandy - http://fontawesome.io"
- *
- *  Author - Dave Gandy
- *  ------------------------------------------------------------------------------
- *  Email: dave@fontawesome.io
- *  Twitter: http://twitter.com/davegandy
- *  Work: Lead Product Designer @ Kyruus - http://kyruus.com
- */
-/* FONT PATH
- * -------------------------- */
-@font-face {
-  font-family: 'FontAwesome';
-  src: url('../font/fontawesome-webfont.eot?v=3.2.1');
-  src: url('../font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');
-  font-weight: normal;
-  font-style: normal;
-}
-/* FONT AWESOME CORE
- * -------------------------- */
-[class^="icon-"],
-[class*=" icon-"] {
-  font-family: FontAwesome;
-  font-weight: normal;
-  font-style: normal;
-  text-decoration: inherit;
-  -webkit-font-smoothing: antialiased;
-  *margin-right: .3em;
-}
-[class^="icon-"]:before,
-[class*=" icon-"]:before {
-  text-decoration: inherit;
-  display: inline-block;
-  speak: none;
-}
-/* makes the font 33% larger relative to the icon container */
-.icon-large:before {
-  vertical-align: -10%;
-  font-size: 1.3333333333333333em;
-}
-/* makes sure icons active on rollover in links */
-a [class^="icon-"],
-a [class*=" icon-"] {
-  display: inline;
-}
-/* increased font size for icon-large */
-[class^="icon-"].icon-fixed-width,
-[class*=" icon-"].icon-fixed-width {
-  display: inline-block;
-  width: 1.1428571428571428em;
-  text-align: right;
-  padding-right: 0.2857142857142857em;
-}
-[class^="icon-"].icon-fixed-width.icon-large,
-[class*=" icon-"].icon-fixed-width.icon-large {
-  width: 1.4285714285714286em;
-}
-.icons-ul {
-  margin-left: 2.142857142857143em;
-  list-style-type: none;
-}
-.icons-ul > li {
-  position: relative;
-}
-.icons-ul .icon-li {
-  position: absolute;
-  left: -2.142857142857143em;
-  width: 2.142857142857143em;
-  text-align: center;
-  line-height: inherit;
-}
-[class^="icon-"].hide,
-[class*=" icon-"].hide {
-  display: none;
-}
-.icon-muted {
-  color: #eeeeee;
-}
-.icon-light {
-  color: #ffffff;
-}
-.icon-dark {
-  color: #333333;
-}
-.icon-border {
-  border: solid 1px #eeeeee;
-  padding: .2em .25em .15em;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.icon-2x {
-  font-size: 2em;
-}
-.icon-2x.icon-border {
-  border-width: 2px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.icon-3x {
-  font-size: 3em;
-}
-.icon-3x.icon-border {
-  border-width: 3px;
-  -webkit-border-radius: 5px;
-  -moz-border-radius: 5px;
-  border-radius: 5px;
-}
-.icon-4x {
-  font-size: 4em;
-}
-.icon-4x.icon-border {
-  border-width: 4px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.icon-5x {
-  font-size: 5em;
-}
-.icon-5x.icon-border {
-  border-width: 5px;
-  -webkit-border-radius: 7px;
-  -moz-border-radius: 7px;
-  border-radius: 7px;
-}
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-[class^="icon-"].pull-left,
-[class*=" icon-"].pull-left {
-  margin-right: .3em;
-}
-[class^="icon-"].pull-right,
-[class*=" icon-"].pull-right {
-  margin-left: .3em;
-}
-/* BOOTSTRAP SPECIFIC CLASSES
- * -------------------------- */
-/* Bootstrap 2.0 sprites.less reset */
-[class^="icon-"],
-[class*=" icon-"] {
-  display: inline;
-  width: auto;
-  height: auto;
-  line-height: normal;
-  vertical-align: baseline;
-  background-image: none;
-  background-position: 0% 0%;
-  background-repeat: repeat;
-  margin-top: 0;
-}
-/* more sprites.less reset */
-.icon-white,
-.nav-pills > .active > a > [class^="icon-"],
-.nav-pills > .active > a > [class*=" icon-"],
-.nav-list > .active > a > [class^="icon-"],
-.nav-list > .active > a > [class*=" icon-"],
-.navbar-inverse .nav > .active > a > [class^="icon-"],
-.navbar-inverse .nav > .active > a > [class*=" icon-"],
-.dropdown-menu > li > a:hover > [class^="icon-"],
-.dropdown-menu > li > a:hover > [class*=" icon-"],
-.dropdown-menu > .active > a > [class^="icon-"],
-.dropdown-menu > .active > a > [class*=" icon-"],
-.dropdown-submenu:hover > a > [class^="icon-"],
-.dropdown-submenu:hover > a > [class*=" icon-"] {
-  background-image: none;
-}
-/* keeps Bootstrap styles with and without icons the same */
-.btn [class^="icon-"].icon-large,
-.nav [class^="icon-"].icon-large,
-.btn [class*=" icon-"].icon-large,
-.nav [class*=" icon-"].icon-large {
-  line-height: .9em;
-}
-.btn [class^="icon-"].icon-spin,
-.nav [class^="icon-"].icon-spin,
-.btn [class*=" icon-"].icon-spin,
-.nav [class*=" icon-"].icon-spin {
-  display: inline-block;
-}
-.nav-tabs [class^="icon-"],
-.nav-pills [class^="icon-"],
-.nav-tabs [class*=" icon-"],
-.nav-pills [class*=" icon-"],
-.nav-tabs [class^="icon-"].icon-large,
-.nav-pills [class^="icon-"].icon-large,
-.nav-tabs [class*=" icon-"].icon-large,
-.nav-pills [class*=" icon-"].icon-large {
-  line-height: .9em;
-}
-.btn [class^="icon-"].pull-left.icon-2x,
-.btn [class*=" icon-"].pull-left.icon-2x,
-.btn [class^="icon-"].pull-right.icon-2x,
-.btn [class*=" icon-"].pull-right.icon-2x {
-  margin-top: .18em;
-}
-.btn [class^="icon-"].icon-spin.icon-large,
-.btn [class*=" icon-"].icon-spin.icon-large {
-  line-height: .8em;
-}
-.btn.btn-small [class^="icon-"].pull-left.icon-2x,
-.btn.btn-small [class*=" icon-"].pull-left.icon-2x,
-.btn.btn-small [class^="icon-"].pull-right.icon-2x,
-.btn.btn-small [class*=" icon-"].pull-right.icon-2x {
-  margin-top: .25em;
-}
-.btn.btn-large [class^="icon-"],
-.btn.btn-large [class*=" icon-"] {
-  margin-top: 0;
-}
-.btn.btn-large [class^="icon-"].pull-left.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-left.icon-2x,
-.btn.btn-large [class^="icon-"].pull-right.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-right.icon-2x {
-  margin-top: .05em;
-}
-.btn.btn-large [class^="icon-"].pull-left.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-left.icon-2x {
-  margin-right: .2em;
-}
-.btn.btn-large [class^="icon-"].pull-right.icon-2x,
-.btn.btn-large [class*=" icon-"].pull-right.icon-2x {
-  margin-left: .2em;
-}
-/* Fixes alignment in nav lists */
-.nav-list [class^="icon-"],
-.nav-list [class*=" icon-"] {
-  line-height: inherit;
-}
-/* EXTRAS
- * -------------------------- */
-/* Stacked and layered icon */
-.icon-stack {
-  position: relative;
-  display: inline-block;
-  width: 2em;
-  height: 2em;
-  line-height: 2em;
-  vertical-align: -35%;
-}
-.icon-stack [class^="icon-"],
-.icon-stack [class*=" icon-"] {
-  display: block;
-  text-align: center;
-  position: absolute;
-  width: 100%;
-  height: 100%;
-  font-size: 1em;
-  line-height: inherit;
-  *line-height: 2em;
-}
-.icon-stack .icon-stack-base {
-  font-size: 2em;
-  *line-height: 1em;
-}
-/* Animated rotating icon */
-.icon-spin {
-  display: inline-block;
-  -moz-animation: spin 2s infinite linear;
-  -o-animation: spin 2s infinite linear;
-  -webkit-animation: spin 2s infinite linear;
-  animation: spin 2s infinite linear;
-}
-/* Prevent stack and spinners from being taken inline when inside a link */
-a .icon-stack,
-a .icon-spin {
-  display: inline-block;
-  text-decoration: none;
-}
-@-moz-keyframes spin {
-  0% {
-    -moz-transform: rotate(0deg);
-  }
-  100% {
-    -moz-transform: rotate(359deg);
-  }
-}
-@-webkit-keyframes spin {
-  0% {
-    -webkit-transform: rotate(0deg);
-  }
-  100% {
-    -webkit-transform: rotate(359deg);
-  }
-}
-@-o-keyframes spin {
-  0% {
-    -o-transform: rotate(0deg);
-  }
-  100% {
-    -o-transform: rotate(359deg);
-  }
-}
-@-ms-keyframes spin {
-  0% {
-    -ms-transform: rotate(0deg);
-  }
-  100% {
-    -ms-transform: rotate(359deg);
-  }
-}
-@keyframes spin {
-  0% {
-    transform: rotate(0deg);
-  }
-  100% {
-    transform: rotate(359deg);
-  }
-}
-/* Icon rotations and mirroring */
-.icon-rotate-90:before {
-  -webkit-transform: rotate(90deg);
-  -moz-transform: rotate(90deg);
-  -ms-transform: rotate(90deg);
-  -o-transform: rotate(90deg);
-  transform: rotate(90deg);
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-}
-.icon-rotate-180:before {
-  -webkit-transform: rotate(180deg);
-  -moz-transform: rotate(180deg);
-  -ms-transform: rotate(180deg);
-  -o-transform: rotate(180deg);
-  transform: rotate(180deg);
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-}
-.icon-rotate-270:before {
-  -webkit-transform: rotate(270deg);
-  -moz-transform: rotate(270deg);
-  -ms-transform: rotate(270deg);
-  -o-transform: rotate(270deg);
-  transform: rotate(270deg);
-  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-}
-.icon-flip-horizontal:before {
-  -webkit-transform: scale(-1, 1);
-  -moz-transform: scale(-1, 1);
-  -ms-transform: scale(-1, 1);
-  -o-transform: scale(-1, 1);
-  transform: scale(-1, 1);
-}
-.icon-flip-vertical:before {
-  -webkit-transform: scale(1, -1);
-  -moz-transform: scale(1, -1);
-  -ms-transform: scale(1, -1);
-  -o-transform: scale(1, -1);
-  transform: scale(1, -1);
-}
-/* ensure rotation occurs inside anchor tags */
-a .icon-rotate-90:before,
-a .icon-rotate-180:before,
-a .icon-rotate-270:before,
-a .icon-flip-horizontal:before,
-a .icon-flip-vertical:before {
-  display: inline-block;
-}
-/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
-   readers do not read off random characters that represent icons */
-.icon-glass:before {
-  content: "\f000";
-}
-.icon-music:before {
-  content: "\f001";
-}
-.icon-search:before {
-  content: "\f002";
-}
-.icon-envelope-alt:before {
-  content: "\f003";
-}
-.icon-heart:before {
-  content: "\f004";
-}
-.icon-star:before {
-  content: "\f005";
-}
-.icon-star-empty:before {
-  content: "\f006";
-}
-.icon-user:before {
-  content: "\f007";
-}
-.icon-film:before {
-  content: "\f008";
-}
-.icon-th-large:before {
-  content: "\f009";
-}
-.icon-th:before {
-  content: "\f00a";
-}
-.icon-th-list:before {
-  content: "\f00b";
-}
-.icon-ok:before {
-  content: "\f00c";
-}
-.icon-remove:before {
-  content: "\f00d";
-}
-.icon-zoom-in:before {
-  content: "\f00e";
-}
-.icon-zoom-out:before {
-  content: "\f010";
-}
-.icon-power-off:before,
-.icon-off:before {
-  content: "\f011";
-}
-.icon-signal:before {
-  content: "\f012";
-}
-.icon-gear:before,
-.icon-cog:before {
-  content: "\f013";
-}
-.icon-trash:before {
-  content: "\f014";
-}
-.icon-home:before {
-  content: "\f015";
-}
-.icon-file-alt:before {
-  content: "\f016";
-}
-.icon-time:before {
-  content: "\f017";
-}
-.icon-road:before {
-  content: "\f018";
-}
-.icon-download-alt:before {
-  content: "\f019";
-}
-.icon-download:before {
-  content: "\f01a";
-}
-.icon-upload:before {
-  content: "\f01b";
-}
-.icon-inbox:before {
-  content: "\f01c";
-}
-.icon-play-circle:before {
-  content: "\f01d";
-}
-.icon-rotate-right:before,
-.icon-repeat:before {
-  content: "\f01e";
-}
-.icon-refresh:before {
-  content: "\f021";
-}
-.icon-list-alt:before {
-  content: "\f022";
-}
-.icon-lock:before {
-  content: "\f023";
-}
-.icon-flag:before {
-  content: "\f024";
-}
-.icon-headphones:before {
-  content: "\f025";
-}
-.icon-volume-off:before {
-  content: "\f026";
-}
-.icon-volume-down:before {
-  content: "\f027";
-}
-.icon-volume-up:before {
-  content: "\f028";
-}
-.icon-qrcode:before {
-  content: "\f029";
-}
-.icon-barcode:before {
-  content: "\f02a";
-}
-.icon-tag:before {
-  content: "\f02b";
-}
-.icon-tags:before {
-  content: "\f02c";
-}
-.icon-book:before {
-  content: "\f02d";
-}
-.icon-bookmark:before {
-  content: "\f02e";
-}
-.icon-print:before {
-  content: "\f02f";
-}
-.icon-camera:before {
-  content: "\f030";
-}
-.icon-font:before {
-  content: "\f031";
-}
-.icon-bold:before {
-  content: "\f032";
-}
-.icon-italic:before {
-  content: "\f033";
-}
-.icon-text-height:before {
-  content: "\f034";
-}
-.icon-text-width:before {
-  content: "\f035";
-}
-.icon-align-left:before {
-  content: "\f036";
-}
-.icon-align-center:before {
-  content: "\f037";
-}
-.icon-align-right:before {
-  content: "\f038";
-}
-.icon-align-justify:before {
-  content: "\f039";
-}
-.icon-list:before {
-  content: "\f03a";
-}
-.icon-indent-left:before {
-  content: "\f03b";
-}
-.icon-indent-right:before {
-  content: "\f03c";
-}
-.icon-facetime-video:before {
-  content: "\f03d";
-}
-.icon-picture:before {
-  content: "\f03e";
-}
-.icon-pencil:before {
-  content: "\f040";
-}
-.icon-map-marker:before {
-  content: "\f041";
-}
-.icon-adjust:before {
-  content: "\f042";
-}
-.icon-tint:before {
-  content: "\f043";
-}
-.icon-edit:before {
-  content: "\f044";
-}
-.icon-share:before {
-  content: "\f045";
-}
-.icon-check:before {
-  content: "\f046";
-}
-.icon-move:before {
-  content: "\f047";
-}
-.icon-step-backward:before {
-  content: "\f048";
-}
-.icon-fast-backward:before {
-  content: "\f049";
-}
-.icon-backward:before {
-  content: "\f04a";
-}
-.icon-play:before {
-  content: "\f04b";
-}
-.icon-pause:before {
-  content: "\f04c";
-}
-.icon-stop:before {
-  content: "\f04d";
-}
-.icon-forward:before {
-  content: "\f04e";
-}
-.icon-fast-forward:before {
-  content: "\f050";
-}
-.icon-step-forward:before {
-  content: "\f051";
-}
-.icon-eject:before {
-  content: "\f052";
-}
-.icon-chevron-left:before {
-  content: "\f053";
-}
-.icon-chevron-right:before {
-  content: "\f054";
-}
-.icon-plus-sign:before {
-  content: "\f055";
-}
-.icon-minus-sign:before {
-  content: "\f056";
-}
-.icon-remove-sign:before {
-  content: "\f057";
-}
-.icon-ok-sign:before {
-  content: "\f058";
-}
-.icon-question-sign:before {
-  content: "\f059";
-}
-.icon-info-sign:before {
-  content: "\f05a";
-}
-.icon-screenshot:before {
-  content: "\f05b";
-}
-.icon-remove-circle:before {
-  content: "\f05c";
-}
-.icon-ok-circle:before {
-  content: "\f05d";
-}
-.icon-ban-circle:before {
-  content: "\f05e";
-}
-.icon-arrow-left:before {
-  content: "\f060";
-}
-.icon-arrow-right:before {
-  content: "\f061";
-}
-.icon-arrow-up:before {
-  content: "\f062";
-}
-.icon-arrow-down:before {
-  content: "\f063";
-}
-.icon-mail-forward:before,
-.icon-share-alt:before {
-  content: "\f064";
-}
-.icon-resize-full:before {
-  content: "\f065";
-}
-.icon-resize-small:before {
-  content: "\f066";
-}
-.icon-plus:before {
-  content: "\f067";
-}
-.icon-minus:before {
-  content: "\f068";
-}
-.icon-asterisk:before {
-  content: "\f069";
-}
-.icon-exclamation-sign:before {
-  content: "\f06a";
-}
-.icon-gift:before {
-  content: "\f06b";
-}
-.icon-leaf:before {
-  content: "\f06c";
-}
-.icon-fire:before {
-  content: "\f06d";
-}
-.icon-eye-open:before {
-  content: "\f06e";
-}
-.icon-eye-close:before {
-  content: "\f070";
-}
-.icon-warning-sign:before {
-  content: "\f071";
-}
-.icon-plane:before {
-  content: "\f072";
-}
-.icon-calendar:before {
-  content: "\f073";
-}
-.icon-random:before {
-  content: "\f074";
-}
-.icon-comment:before {
-  content: "\f075";
-}
-.icon-magnet:before {
-  content: "\f076";
-}
-.icon-chevron-up:before {
-  content: "\f077";
-}
-.icon-chevron-down:before {
-  content: "\f078";
-}
-.icon-retweet:before {
-  content: "\f079";
-}
-.icon-shopping-cart:before {
-  content: "\f07a";
-}
-.icon-folder-close:before {
-  content: "\f07b";
-}
-.icon-folder-open:before {
-  content: "\f07c";
-}
-.icon-resize-vertical:before {
-  content: "\f07d";
-}
-.icon-resize-horizontal:before {
-  content: "\f07e";
-}
-.icon-bar-chart:before {
-  content: "\f080";
-}
-.icon-twitter-sign:before {
-  content: "\f081";
-}
-.icon-facebook-sign:before {
-  content: "\f082";
-}
-.icon-camera-retro:before {
-  content: "\f083";
-}
-.icon-key:before {
-  content: "\f084";
-}
-.icon-gears:before,
-.icon-cogs:before {
-  content: "\f085";
-}
-.icon-comments:before {
-  content: "\f086";
-}
-.icon-thumbs-up-alt:before {
-  content: "\f087";
-}
-.icon-thumbs-down-alt:before {
-  content: "\f088";
-}
-.icon-star-half:before {
-  content: "\f089";
-}
-.icon-heart-empty:before {
-  content: "\f08a";
-}
-.icon-signout:before {
-  content: "\f08b";
-}
-.icon-linkedin-sign:before {
-  content: "\f08c";
-}
-.icon-pushpin:before {
-  content: "\f08d";
-}
-.icon-external-link:before {
-  content: "\f08e";
-}
-.icon-signin:before {
-  content: "\f090";
-}
-.icon-trophy:before {
-  content: "\f091";
-}
-.icon-github-sign:before {
-  content: "\f092";
-}
-.icon-upload-alt:before {
-  content: "\f093";
-}
-.icon-lemon:before {
-  content: "\f094";
-}
-.icon-phone:before {
-  content: "\f095";
-}
-.icon-unchecked:before,
-.icon-check-empty:before {
-  content: "\f096";
-}
-.icon-bookmark-empty:before {
-  content: "\f097";
-}
-.icon-phone-sign:before {
-  content: "\f098";
-}
-.icon-twitter:before {
-  content: "\f099";
-}
-.icon-facebook:before {
-  content: "\f09a";
-}
-.icon-github:before {
-  content: "\f09b";
-}
-.icon-unlock:before {
-  content: "\f09c";
-}
-.icon-credit-card:before {
-  content: "\f09d";
-}
-.icon-rss:before {
-  content: "\f09e";
-}
-.icon-hdd:before {
-  content: "\f0a0";
-}
-.icon-bullhorn:before {
-  content: "\f0a1";
-}
-.icon-bell:before {
-  content: "\f0a2";
-}
-.icon-certificate:before {
-  content: "\f0a3";
-}
-.icon-hand-right:before {
-  content: "\f0a4";
-}
-.icon-hand-left:before {
-  content: "\f0a5";
-}
-.icon-hand-up:before {
-  content: "\f0a6";
-}
-.icon-hand-down:before {
-  content: "\f0a7";
-}
-.icon-circle-arrow-left:before {
-  content: "\f0a8";
-}
-.icon-circle-arrow-right:before {
-  content: "\f0a9";
-}
-.icon-circle-arrow-up:before {
-  content: "\f0aa";
-}
-.icon-circle-arrow-down:before {
-  content: "\f0ab";
-}
-.icon-globe:before {
-  content: "\f0ac";
-}
-.icon-wrench:before {
-  content: "\f0ad";
-}
-.icon-tasks:before {
-  content: "\f0ae";
-}
-.icon-filter:before {
-  content: "\f0b0";
-}
-.icon-briefcase:before {
-  content: "\f0b1";
-}
-.icon-fullscreen:before {
-  content: "\f0b2";
-}
-.icon-group:before {
-  content: "\f0c0";
-}
-.icon-link:before {
-  content: "\f0c1";
-}
-.icon-cloud:before {
-  content: "\f0c2";
-}
-.icon-beaker:before {
-  content: "\f0c3";
-}
-.icon-cut:before {
-  content: "\f0c4";
-}
-.icon-copy:before {
-  content: "\f0c5";
-}
-.icon-paperclip:before,
-.icon-paper-clip:before {
-  content: "\f0c6";
-}
-.icon-save:before {
-  content: "\f0c7";
-}
-.icon-sign-blank:before {
-  content: "\f0c8";
-}
-.icon-reorder:before {
-  content: "\f0c9";
-}
-.icon-list-ul:before {
-  content: "\f0ca";
-}
-.icon-list-ol:before {
-  content: "\f0cb";
-}
-.icon-strikethrough:before {
-  content: "\f0cc";
-}
-.icon-underline:before {
-  content: "\f0cd";
-}
-.icon-table:before {
-  content: "\f0ce";
-}
-.icon-magic:before {
-  content: "\f0d0";
-}
-.icon-truck:before {
-  content: "\f0d1";
-}
-.icon-pinterest:before {
-  content: "\f0d2";
-}
-.icon-pinterest-sign:before {
-  content: "\f0d3";
-}
-.icon-google-plus-sign:before {
-  content: "\f0d4";
-}
-.icon-google-plus:before {
-  content: "\f0d5";
-}
-.icon-money:before {
-  content: "\f0d6";
-}
-.icon-caret-down:before {
-  content: "\f0d7";
-}
-.icon-caret-up:before {
-  content: "\f0d8";
-}
-.icon-caret-left:before {
-  content: "\f0d9";
-}
-.icon-caret-right:before {
-  content: "\f0da";
-}
-.icon-columns:before {
-  content: "\f0db";
-}
-.icon-sort:before {
-  content: "\f0dc";
-}
-.icon-sort-down:before {
-  content: "\f0dd";
-}
-.icon-sort-up:before {
-  content: "\f0de";
-}
-.icon-envelope:before {
-  content: "\f0e0";
-}
-.icon-linkedin:before {
-  content: "\f0e1";
-}
-.icon-rotate-left:before,
-.icon-undo:before {
-  content: "\f0e2";
-}
-.icon-legal:before {
-  content: "\f0e3";
-}
-.icon-dashboard:before {
-  content: "\f0e4";
-}
-.icon-comment-alt:before {
-  content: "\f0e5";
-}
-.icon-comments-alt:before {
-  content: "\f0e6";
-}
-.icon-bolt:before {
-  content: "\f0e7";
-}
-.icon-sitemap:before {
-  content: "\f0e8";
-}
-.icon-umbrella:before {
-  content: "\f0e9";
-}
-.icon-paste:before {
-  content: "\f0ea";
-}
-.icon-lightbulb:before {
-  content: "\f0eb";
-}
-.icon-exchange:before {
-  content: "\f0ec";
-}
-.icon-cloud-download:before {
-  content: "\f0ed";
-}
-.icon-cloud-upload:before {
-  content: "\f0ee";
-}
-.icon-user-md:before {
-  content: "\f0f0";
-}
-.icon-stethoscope:before {
-  content: "\f0f1";
-}
-.icon-suitcase:before {
-  content: "\f0f2";
-}
-.icon-bell-alt:before {
-  content: "\f0f3";
-}
-.icon-coffee:before {
-  content: "\f0f4";
-}
-.icon-food:before {
-  content: "\f0f5";
-}
-.icon-file-text-alt:before {
-  content: "\f0f6";
-}
-.icon-building:before {
-  content: "\f0f7";
-}
-.icon-hospital:before {
-  content: "\f0f8";
-}
-.icon-ambulance:before {
-  content: "\f0f9";
-}
-.icon-medkit:before {
-  content: "\f0fa";
-}
-.icon-fighter-jet:before {
-  content: "\f0fb";
-}
-.icon-beer:before {
-  content: "\f0fc";
-}
-.icon-h-sign:before {
-  content: "\f0fd";
-}
-.icon-plus-sign-alt:before {
-  content: "\f0fe";
-}
-.icon-double-angle-left:before {
-  content: "\f100";
-}
-.icon-double-angle-right:before {
-  content: "\f101";
-}
-.icon-double-angle-up:before {
-  content: "\f102";
-}
-.icon-double-angle-down:before {
-  content: "\f103";
-}
-.icon-angle-left:before {
-  content: "\f104";
-}
-.icon-angle-right:before {
-  content: "\f105";
-}
-.icon-angle-up:before {
-  content: "\f106";
-}
-.icon-angle-down:before {
-  content: "\f107";
-}
-.icon-desktop:before {
-  content: "\f108";
-}
-.icon-laptop:before {
-  content: "\f109";
-}
-.icon-tablet:before {
-  content: "\f10a";
-}
-.icon-mobile-phone:before {
-  content: "\f10b";
-}
-.icon-circle-blank:before {
-  content: "\f10c";
-}
-.icon-quote-left:before {
-  content: "\f10d";
-}
-.icon-quote-right:before {
-  content: "\f10e";
-}
-.icon-spinner:before {
-  content: "\f110";
-}
-.icon-circle:before {
-  content: "\f111";
-}
-.icon-mail-reply:before,
-.icon-reply:before {
-  content: "\f112";
-}
-.icon-github-alt:before {
-  content: "\f113";
-}
-.icon-folder-close-alt:before {
-  content: "\f114";
-}
-.icon-folder-open-alt:before {
-  content: "\f115";
-}
-.icon-expand-alt:before {
-  content: "\f116";
-}
-.icon-collapse-alt:before {
-  content: "\f117";
-}
-.icon-smile:before {
-  content: "\f118";
-}
-.icon-frown:before {
-  content: "\f119";
-}
-.icon-meh:before {
-  content: "\f11a";
-}
-.icon-gamepad:before {
-  content: "\f11b";
-}
-.icon-keyboard:before {
-  content: "\f11c";
-}
-.icon-flag-alt:before {
-  content: "\f11d";
-}
-.icon-flag-checkered:before {
-  content: "\f11e";
-}
-.icon-terminal:before {
-  content: "\f120";
-}
-.icon-code:before {
-  content: "\f121";
-}
-.icon-reply-all:before {
-  content: "\f122";
-}
-.icon-mail-reply-all:before {
-  content: "\f122";
-}
-.icon-star-half-full:before,
-.icon-star-half-empty:before {
-  content: "\f123";
-}
-.icon-location-arrow:before {
-  content: "\f124";
-}
-.icon-crop:before {
-  content: "\f125";
-}
-.icon-code-fork:before {
-  content: "\f126";
-}
-.icon-unlink:before {
-  content: "\f127";
-}
-.icon-question:before {
-  content: "\f128";
-}
-.icon-info:before {
-  content: "\f129";
-}
-.icon-exclamation:before {
-  content: "\f12a";
-}
-.icon-superscript:before {
-  content: "\f12b";
-}
-.icon-subscript:before {
-  content: "\f12c";
-}
-.icon-eraser:before {
-  content: "\f12d";
-}
-.icon-puzzle-piece:before {
-  content: "\f12e";
-}
-.icon-microphone:before {
-  content: "\f130";
-}
-.icon-microphone-off:before {
-  content: "\f131";
-}
-.icon-shield:before {
-  content: "\f132";
-}
-.icon-calendar-empty:before {
-  content: "\f133";
-}
-.icon-fire-extinguisher:before {
-  content: "\f134";
-}
-.icon-rocket:before {
-  content: "\f135";
-}
-.icon-maxcdn:before {
-  content: "\f136";
-}
-.icon-chevron-sign-left:before {
-  content: "\f137";
-}
-.icon-chevron-sign-right:before {
-  content: "\f138";
-}
-.icon-chevron-sign-up:before {
-  content: "\f139";
-}
-.icon-chevron-sign-down:before {
-  content: "\f13a";
-}
-.icon-html5:before {
-  content: "\f13b";
-}
-.icon-css3:before {
-  content: "\f13c";
-}
-.icon-anchor:before {
-  content: "\f13d";
-}
-.icon-unlock-alt:before {
-  content: "\f13e";
-}
-.icon-bullseye:before {
-  content: "\f140";
-}
-.icon-ellipsis-horizontal:before {
-  content: "\f141";
-}
-.icon-ellipsis-vertical:before {
-  content: "\f142";
-}
-.icon-rss-sign:before {
-  content: "\f143";
-}
-.icon-play-sign:before {
-  content: "\f144";
-}
-.icon-ticket:before {
-  content: "\f145";
-}
-.icon-minus-sign-alt:before {
-  content: "\f146";
-}
-.icon-check-minus:before {
-  content: "\f147";
-}
-.icon-level-up:before {
-  content: "\f148";
-}
-.icon-level-down:before {
-  content: "\f149";
-}
-.icon-check-sign:before {
-  content: "\f14a";
-}
-.icon-edit-sign:before {
-  content: "\f14b";
-}
-.icon-external-link-sign:before {
-  content: "\f14c";
-}
-.icon-share-sign:before {
-  content: "\f14d";
-}
-.icon-compass:before {
-  content: "\f14e";
-}
-.icon-collapse:before {
-  content: "\f150";
-}
-.icon-collapse-top:before {
-  content: "\f151";
-}
-.icon-expand:before {
-  content: "\f152";
-}
-.icon-euro:before,
-.icon-eur:before {
-  content: "\f153";
-}
-.icon-gbp:before {
-  content: "\f154";
-}
-.icon-dollar:before,
-.icon-usd:before {
-  content: "\f155";
-}
-.icon-rupee:before,
-.icon-inr:before {
-  content: "\f156";
-}
-.icon-yen:before,
-.icon-jpy:before {
-  content: "\f157";
-}
-.icon-renminbi:before,
-.icon-cny:before {
-  content: "\f158";
-}
-.icon-won:before,
-.icon-krw:before {
-  content: "\f159";
-}
-.icon-bitcoin:before,
-.icon-btc:before {
-  content: "\f15a";
-}
-.icon-file:before {
-  content: "\f15b";
-}
-.icon-file-text:before {
-  content: "\f15c";
-}
-.icon-sort-by-alphabet:before {
-  content: "\f15d";
-}
-.icon-sort-by-alphabet-alt:before {
-  content: "\f15e";
-}
-.icon-sort-by-attributes:before {
-  content: "\f160";
-}
-.icon-sort-by-attributes-alt:before {
-  content: "\f161";
-}
-.icon-sort-by-order:before {
-  content: "\f162";
-}
-.icon-sort-by-order-alt:before {
-  content: "\f163";
-}
-.icon-thumbs-up:before {
-  content: "\f164";
-}
-.icon-thumbs-down:before {
-  content: "\f165";
-}
-.icon-youtube-sign:before {
-  content: "\f166";
-}
-.icon-youtube:before {
-  content: "\f167";
-}
-.icon-xing:before {
-  content: "\f168";
-}
-.icon-xing-sign:before {
-  content: "\f169";
-}
-.icon-youtube-play:before {
-  content: "\f16a";
-}
-.icon-dropbox:before {
-  content: "\f16b";
-}
-.icon-stackexchange:before {
-  content: "\f16c";
-}
-.icon-instagram:before {
-  content: "\f16d";
-}
-.icon-flickr:before {
-  content: "\f16e";
-}
-.icon-adn:before {
-  content: "\f170";
-}
-.icon-bitbucket:before {
-  content: "\f171";
-}
-.icon-bitbucket-sign:before {
-  content: "\f172";
-}
-.icon-tumblr:before {
-  content: "\f173";
-}
-.icon-tumblr-sign:before {
-  content: "\f174";
-}
-.icon-long-arrow-down:before {
-  content: "\f175";
-}
-.icon-long-arrow-up:before {
-  content: "\f176";
-}
-.icon-long-arrow-left:before {
-  content: "\f177";
-}
-.icon-long-arrow-right:before {
-  content: "\f178";
-}
-.icon-apple:before {
-  content: "\f179";
-}
-.icon-windows:before {
-  content: "\f17a";
-}
-.icon-android:before {
-  content: "\f17b";
-}
-.icon-linux:before {
-  content: "\f17c";
-}
-.icon-dribbble:before {
-  content: "\f17d";
-}
-.icon-skype:before {
-  content: "\f17e";
-}
-.icon-foursquare:before {
-  content: "\f180";
-}
-.icon-trello:before {
-  content: "\f181";
-}
-.icon-female:before {
-  content: "\f182";
-}
-.icon-male:before {
-  content: "\f183";
-}
-.icon-gittip:before {
-  content: "\f184";
-}
-.icon-sun:before {
-  content: "\f185";
-}
-.icon-moon:before {
-  content: "\f186";
-}
-.icon-archive:before {
-  content: "\f187";
-}
-.icon-bug:before {
-  content: "\f188";
-}
-.icon-vk:before {
-  content: "\f189";
-}
-.icon-weibo:before {
-  content: "\f18a";
-}
-.icon-renren:before {
-  content: "\f18b";
-}
diff --git a/assets/css/scss/plugin/_imodal.scss b/assets/css/scss/plugin/_imodal.scss
deleted file mode 100644
index 9d0dd13..0000000
--- a/assets/css/scss/plugin/_imodal.scss
+++ /dev/null
@@ -1,83 +0,0 @@
-.ModalContent > .row {min-width:0;width:auto;}
-
-#ModalOverlay {
-	background-color:#000;
-}
-
-#ModalContainer {
-	left: 50%;
-	top: 15%;
-}
-
-.modalClose {
-	z-index: 100000;
-	cursor: pointer;
-	display: block;
-	position: absolute;
-	right: 8px;
-	top: 8px;
-	color:#222;
-}
-
-#ModalLoadingOverlay {
-	background: #000;
-	cursor: pointer;
-}
-
-#ModalLoadingIndicator {
-	width: 100px;
-	height: 100px;
-	margin-left: -50px;
-	margin-top: -50px;
-/* 	background: url(loading.gif) no-repeat; */
-	position: fixed;
-	top: 50%;
-	left: 50%;
-	z-index: 30001;
-}
-
-#ModalContentContainer {
-	background:#fff;
-	border:1px solid #e6e6e6;
-	box-shadow: 0 0 30px 4px rgba(0,0,0,.4);
-	-webkit-background-clip: padding-box;
-}
-
-#ModalContentContainer form {margin:0;}
-
-#ModalTitle, .ModalTitle {margin:0;padding:0;}
-
-h3#ModalTitle, h3.ModalTitle {
-	padding: 10px 14px;
-	-webkit-background-clip: padding-box;
-	text-align: left;
-	margin:0;
-}
-
-#ModalContent, .ModalContent {
-	margin: 0;
-	text-align: left;
-	color: #444;
-	padding: 0 10px;
-}
-
-.ModalContentWithButtons .ModalContent, .ModalContentWithButtons #ModalContent {
-	margin-bottom: 0;
-	border-bottom-width: 0;
-}
-
-#ModalButtonRow, .ModalButtonRow {
-	-webkit-background-clip: padding-box;
-	padding: 10px;
-	line-height: 30px;
-	text-align:right;
-}
-
-#ModalButtonRow input, .ModalButtonRow input {
-	text-align: center;
-}
-
-#ModalButtonRow input.Submit, .ModalButtonRow input.Submit,
-#ModalButtonRow input.SubmitButton, .ModalButtonRow input.SubmitButton {
-	font-weight: bold;
-}
\ No newline at end of file
diff --git a/assets/css/scss/plugin/_jquery.fancybox.scss b/assets/css/scss/plugin/_jquery.fancybox.scss
deleted file mode 100644
index 4ddc384..0000000
--- a/assets/css/scss/plugin/_jquery.fancybox.scss
+++ /dev/null
@@ -1,330 +0,0 @@
-/* fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-.fancybox-wrap,
-.fancybox-skin,
-.fancybox-outer,
-.fancybox-inner,
-.fancybox-image,
-.fancybox-wrap iframe,
-.fancybox-wrap object,
-.fancybox-nav,
-.fancybox-nav span,
-.fancybox-tmp
-{
-	padding: 0;
-	margin: 0;
-	border: 0;
-	outline: none;
-	vertical-align: top;
-}
-
-.fancybox-wrap {
-	position: absolute;
-	top: 0;
-	left: 0;
-	z-index: 8020;
-}
-
-.fancybox-skin {
-	position: relative;
-	background: #f9f9f9;
-	color: #444;
-	text-shadow: none;
-	-webkit-border-radius: 4px;
-	   -moz-border-radius: 4px;
-	        border-radius: 4px;
-}
-
-.fancybox-opened {
-	z-index: 8030;
-}
-
-.fancybox-opened .fancybox-skin {
-	-webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-	   -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-	        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
-}
-
-.fancybox-outer, .fancybox-inner {
-	position: relative;
-}
-
-.fancybox-inner {
-	overflow: hidden;
-}
-
-.fancybox-type-iframe .fancybox-inner {
-	-webkit-overflow-scrolling: touch;
-}
-
-.fancybox-error {
-	color: #444;
-	font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
-	margin: 0;
-	padding: 15px;
-	white-space: nowrap;
-}
-
-.fancybox-image, .fancybox-iframe {
-	display: block;
-	width: 100%;
-	height: 100%;
-}
-
-.fancybox-image {
-	max-width: 100%;
-	max-height: 100%;
-}
-
-#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
-	background-image: url('../images/fancybox/fancybox_sprite.png');
-}
-
-#fancybox-loading {
-	position: fixed;
-	top: 50%;
-	left: 50%;
-	margin-top: -22px;
-	margin-left: -22px;
-	background-position: 0 -108px;
-	opacity: 0.8;
-	cursor: pointer;
-	z-index: 8060;
-}
-
-#fancybox-loading div {
-	width: 44px;
-	height: 44px;
-	background: url('../images/fancybox/fancybox_loading.gif') center center no-repeat;
-}
-
-.fancybox-close {
-	position: absolute;
-	top: -18px;
-	right: -18px;
-	width: 36px;
-	height: 36px;
-	cursor: pointer;
-	z-index: 8040;
-}
-
-.fancybox-nav {
-	position: absolute;
-	top: 0;
-	width: 40%;
-	height: 100%;
-	cursor: pointer;
-	text-decoration: none;
-	background: transparent url('../images/fancybox/blank.gif'); /* helps IE */
-	-webkit-tap-highlight-color: rgba(0,0,0,0);
-	z-index: 8040;
-}
-
-.fancybox-prev {
-	left: 0;
-}
-
-.fancybox-next {
-	right: 0;
-}
-
-.fancybox-nav span {
-	position: absolute;
-	top: 50%;
-	width: 36px;
-	height: 34px;
-	margin-top: -18px;
-	cursor: pointer;
-	z-index: 8040;
-	visibility: hidden;
-}
-
-.fancybox-prev span {
-	left: 10px;
-	background-position: 0 -36px;
-}
-
-.fancybox-next span {
-	right: 10px;
-	background-position: 0 -72px;
-}
-
-.fancybox-nav:hover span {
-	visibility: visible;
-}
-
-.fancybox-tmp {
-	position: absolute;
-	top: -99999px;
-	left: -99999px;
-	visibility: hidden;
-	max-width: 99999px;
-	max-height: 99999px;
-	overflow: visible !important;
-}
-
-/* Overlay helper */
-
-.fancybox-lock {
-    overflow: hidden !important;
-    width: auto;
-}
-
-.fancybox-lock body {
-    overflow: hidden !important;
-}
-
-.fancybox-lock-test {
-    overflow-y: hidden !important;
-}
-
-.fancybox-overlay {
-	position: absolute;
-	top: 0;
-	left: 0;
-	overflow: hidden;
-	display: none;
-	z-index: 8010;
-	background: url('../images/fancybox/fancybox_overlay.png');
-}
-
-.fancybox-overlay-fixed {
-	position: fixed;
-	bottom: 0;
-	right: 0;
-}
-
-.fancybox-lock .fancybox-overlay {
-	overflow: auto;
-	overflow-y: scroll;
-}
-
-/* Title helper */
-
-.fancybox-title {
-	visibility: hidden;
-	font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
-	position: relative;
-	text-shadow: none;
-	z-index: 8050;
-}
-
-.fancybox-opened .fancybox-title {
-	visibility: visible;
-}
-
-.fancybox-title-float-wrap {
-	position: absolute;
-	bottom: 0;
-	right: 50%;
-	margin-bottom: -35px;
-	z-index: 8050;
-	text-align: center;
-}
-
-.fancybox-title-float-wrap .child {
-	display: inline-block;
-	margin-right: -100%;
-	padding: 2px 20px;
-	background: transparent; /* Fallback for web browsers that doesn't support RGBa */
-	background: rgba(0, 0, 0, 0.8);
-	-webkit-border-radius: 15px;
-	   -moz-border-radius: 15px;
-	        border-radius: 15px;
-	text-shadow: 0 1px 2px #222;
-	color: #FFF;
-	font-weight: bold;
-	line-height: 24px;
-	white-space: nowrap;
-}
-
-.fancybox-title-outside-wrap {
-	position: relative;
-	margin-top: 10px;
-	color: #fff;
-}
-
-.fancybox-title-inside-wrap {
-	padding-top: 10px;
-}
-
-.fancybox-title-over-wrap {
-	position: absolute;
-	bottom: 0;
-	left: 0;
-	color: #fff;
-	padding: 10px;
-	background: #000;
-	background: rgba(0, 0, 0, .8);
-}
-
-/*Retina graphics!*/
-@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
-	   only screen and (min--moz-device-pixel-ratio: 1.5),
-	   only screen and (min-device-pixel-ratio: 1.5){
-
-	#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
-		background-image: url('../images/fancybox/fancybox_sprite@2x.png');
-		background-size: 44px 152px; /*The size of the normal image, half the size of the hi-res image*/
-	}
-
-	#fancybox-loading div {
-		background-image: url('../images/fancybox/fancybox_loading@2x.gif');
-		background-size: 24px 24px; /*The size of the normal image, half the size of the hi-res image*/
-	}
-}
-
-#fancybox-thumbs {
-	position: fixed;
-	left: 0;
-	width: 100%;
-	overflow: hidden;
-	z-index: 8050;
-}
-
-#fancybox-thumbs.bottom {
-	bottom: 2px;
-}
-
-#fancybox-thumbs.top {
-	top: 2px;
-}
-
-#fancybox-thumbs ul {
-	position: relative;
-	list-style: none;
-	margin: 0;
-	padding: 0;
-}
-
-#fancybox-thumbs ul li {
-	float: left;
-	padding: 1px;
-	opacity: 0.5;
-}
-
-#fancybox-thumbs ul li.active {
-	opacity: 0.75;
-	padding: 0;
-	border: 1px solid #fff;
-}
-
-#fancybox-thumbs ul li:hover {
-	opacity: 1;
-}
-
-#fancybox-thumbs ul li a {
-	display: block;
-	position: relative;
-	overflow: hidden;
-	border: 1px solid #222;
-	background: #111;
-	outline: none;
-}
-
-#fancybox-thumbs ul li img {
-	display: block;
-	position: relative;
-	border: 0;
-	padding: 0;
-	max-width: none;
-}
\ No newline at end of file
diff --git a/assets/css/scss/plugin/_jquery.zoomie.scss b/assets/css/scss/plugin/_jquery.zoomie.scss
deleted file mode 100644
index 15033cb..0000000
--- a/assets/css/scss/plugin/_jquery.zoomie.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-.zoomie {
-  position: relative;
-}
-
-.zoomie-window {
-  top: 0;
-  left: 0;
-  cursor: none;
-  background-color: #fff;
-  background-repeat: no-repeat;
-  width: 200px;
-  height: 200px;
-  -webkit-border-radius: 200px;
-     -moz-border-radius: 200px;
-          border-radius: 200px;
-  border: 1px solid #c9c9c9;
-  position: absolute;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), inset 0 0 25px rgba(255, 255, 255, 0.3), 0 3px 6px rgba(0, 0, 0, 0.1);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), inset 0 0 25px rgba(255, 255, 255, 0.3), 0 3px 6px rgba(0, 0, 0, 0.1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5), inset 0 0 25px rgba(255, 255, 255, 0.3), 0 3px 6px rgba(0, 0, 0, 0.1);
-  display: none;
-  z-index: 10;
-}
\ No newline at end of file
diff --git a/assets/css/scss/plugin/_product.attributes.scss b/assets/css/scss/plugin/_product.attributes.scss
deleted file mode 100644
index 552507b..0000000
--- a/assets/css/scss/plugin/_product.attributes.scss
+++ /dev/null
@@ -1,313 +0,0 @@
-/* simple required-asterisk colour style */
-.productAttributeList {
-	
-	ul {margin:0;}
-	ul.square {margin-left:17px;}
-	
-	.required {color: $alertColor;}
-	
-	.productAttributeRow {clear:left;margin-bottom:15px;}
-	
-	.productAttributeLabel {
-		float:left;
-		width:$formLabelWidthHalf;
-		position:relative;
-		text-align:right;
-		padding:0 10px 0 15px;
-		margin-bottom:3px;
-	}
-	
-	.productAttributeValue {
-		float:right;
-		width:$formValueWidthHalf;
-	}
-	
-	.productOptionViewRadio label span.name,
-	.productOptionViewProductPickList label span {
-		position:relative;
-		bottom:4px;
-	}
-}
-
-.product.page .productAttributeList {
-	.productAttributeLabel {width:$formLabelWidthProduct;}
-	.productAttributeValue {width:$formValueWidthProduct;}
-}
-
-/* fix radio-list indentation for wrapped values */
-.productOptionViewProductPickList label,
-.productOptionViewRectangle label,
-.productOptionViewRadio label {
-	display: block;
-	padding-left: 18px;
-	min-height: 18px;
-}
-
-/* fix radio-list indentation for wrapped values */
-.productOptionViewProductPickList input,
-.productOptionViewRectangle input,
-.productOptionViewRadio input {
-	float: left;
-	width: 18px;
-	margin-left: -18px;
-	margin-top: 1px;
-	position: relative;
-}
-
-/* remove padding and bullets from semantic UL/LI tags in picklist, swatches and product lists */
-.productAttributeConfigurablePickListSet ul,
-.productAttributeConfigurablePickListSet li,
-.productAttributeConfigurablePickListSwatch ul,
-.productAttributeConfigurablePickListSwatch li,
-.productAttributeConfigurablePickListProduct ul,
-.productAttributeConfigurablePickListProduct li {
-	margin-left: 0;
-	padding-left: 0;
-	list-style-type: none;
-}
-
-/* set up the visible border for all swatch types */
-.productOptionPickListSwatch .textureContainer,
-.productOptionPickListSwatch .swatchColours {
-	position: relative;
-	display: inline-block;
-	border: solid 1px $darkEdge; /* template colour */
-	padding: 1px;
-	margin-bottom: 5px;
-}
-
-/* highlighting of the border for the currently selected swatch value */
-.productOptionPickListSwatch .selectedValue .textureContainer,
-.productOptionPickListSwatch .selectedValue .swatchColours {
-	border-color: $mainColor; /* template colour */
-	border-width: 2px;
-	padding: 0;
-}
-
-/* sizing and positioning of the inside part of a swatch */
-.productOptionPickListSwatch .thumbnail,
-.productOptionPickListSwatch .swatchColour {
-	display: inline-block;
-	width: 25px;
-	height: 25px;
-}
-
-/* positioning of the swatch thumbnail image as a background - the url is set inline via templates */
-.productOptionPickListSwatch .thumbnail {
-	background-position: center center;
-	background-repeat: no-repeat;
-	background-color: #fff; /* template colour */
-}
-
-/* adjust swatch widths to fit two colours */
-.productOptionPickListSwatch .swatchTwoColour .swatchColour {
-	width: 9px;
-}
-
-/* adjust swatch widths to fit three colours */
-.productOptionPickListSwatch .swatchThreeColour .swatchColour {
-	width: 6px;
-}
-
-/* visible border around product image pick list */
-.productOptionViewProductPickListWithImage {
-	border: solid 1px $darkEdge;
-	
-	.scrollContainer {
-		position: relative;
-		max-height: 150px;
-		overflow-y: auto;
-		padding: 1px;
-	}
-	table {border-collapse: collapse;width: 100%;}
-	td {vertical-align: top;padding: 3px;}
-	td.name {width: 100%;white-space:normal;}
-	.selectedValue td {background-color:$mainColor;}
-	.selectedValue td span {color:#fff;}
-	.none td span {color:#222;}
-	.none.selectedValue td {background-color: transparent;color: inherit;}
-	td.input {padding-top: 5px;}
-	
-	img {max-width:50px;}
-}
-
-/* vertical positioning of the date picker icon */
-html.js .productAttributeConfigurableEntryDate .ui-datepicker-trigger {
-	vertical-align: middle;
-}
-
-/* give labels a pointer cursor for swatch and rectangle options when javascript is enabled */
-html.js .productOptionViewRectangle label,
-html.js .productOptionPickListSwatch label {
-	cursor: pointer;
-	position: relative;
-	display:inline;
-}
-
-/* hide radio inputs for swatch and rectangle options when javascript is enabled */
-html.js .productOptionViewRectangle input,
-html.js .productOptionPickListSwatch input {
-	height: 0;
-	overflow: hidden;
-	z-index: -10000;
-	position: absolute;
-	float: none;
-	left:-10000px;
-}
-
-/*
- * styles for rectangle option view
- */
-
-/* place rectangles in a horizontal line */
-html.js .productOptionViewRectangle li {
-	display: inline;
-}
-
-/* set up the label as a container for a bordered rectangle display of the option */
-html.js .productOptionViewRectangle label {
-	display: inline-block;
-	padding: 2px 10px;
-	margin: 0 0 5px 0;
-}
-
-/* the actual visible border */
-html.js .productOptionViewRectangle .option label {
-	border: solid 1px $darkEdge; /* template colour */
-}
-
-/* highlighting of the border for the currently selected rectangle value */
-html.js .productOptionViewRectangle .selectedValue label {
-	border-color:$mainColor; /* template colour */
-	border-width: 2px;
-	padding: 1px 9px;
-}
-
-/* styling specifically for the 'none' option when a rectangle is not required */
-html.js .productOptionViewRectangle .none label,
-html.js .productOptionViewRectangle .selectedValue.none label {
-	padding: 3px 0;
-	text-decoration: underline;
-	color: $mainColor; /* template colour */
-}
-
-/*
- * styles for swatch option type
- */
-
-/* place swatches in a horizontal line */
-html.js .productOptionPickListSwatch li {
-	display: inline;
-}
-
-/* hide the name for swatches when js is available */
-html.js .productOptionPickListSwatch .swatch .name {
-	display: none;
-}
-
-/* make the 'none' option for swatches look like a link */
-html.js .productOptionPickListSwatch .swatchNone .name {
-	text-decoration: underline;
-	color: #075899; /* template colour */
-}
-
-/*
- * swatch / product preview display
- */
-
-/* set up the container */
-.productOptionPreviewDisplay {
-	position: absolute;
-	display: none;
-	border: solid 1px black;
-	background: #fff;
-	padding: 1px;
-	z-index: 10000;
-	margin: 5px 0 0 5px;
-}
-
-/* specific styles for larger colour swatches inside previews */
-.productOptionPreviewDisplay .swatchColour {
-	display: inline-block;
-	width: 150px;
-	height: 150px;
-}
-
-/* specific styles for larger colour swatches inside previews */
-.productOptionPreviewDisplay .swatchTwoColour .swatchColour {
-	width: 75px;
-}
-
-/* specific styles for larger colour swatches inside previews */
-.productOptionPreviewDisplay .swatchThreeColour .swatchColour {
-	width: 50px;
-}
-
-/*
- * control-panel-specific styles
- */
-
-#orderCustomizeItem .productAttributeLabel {
-	font-weight: normal;
-}
-
-/* most form styles are the same as the front end except for widths */
-#orderCustomizeItem .productAttributeRow {
-	padding-left: 190px;
-}
-
-#orderCustomizeItem .productAttributeLabel {
-	margin: 4px 0 4px -180px;
-	padding-top: 0;
-	width: 180px;
-}
-
-/*
- * firefox specific styles
- */
-
-@-moz-document url-prefix() {
-	/* firefox won't hide elements with z-index values but we can render them offscreen without scrolling issues */
-	html.js .productOptionViewRectangle input,
-	html.js .productOptionPickListSwatch input {
-		left: -10000px;
-	}
-}
-
-
-
-@media only screen and (max-width: 767px) {
-	.responsive { // for responsive toggle
-	
-	.productAttributeList .productAttributeLabel {
-		float:none;
-		text-align:left;
-		position:relative;
-		left:-9px;
-		width:auto;
-	}
-	.productAttributeList .productAttributeValue {
-		float:none;
-		padding:0 15px;
-		width:auto;
-	}
-
-	} // responsive toggle
-}
-
-
-
-/* clearfix for attribute rows */
-.productAttributeRow:after {
-     visibility: hidden;
-     display: block;
-     font-size: 0;
-     content: " ";
-     clear: both;
-     height: 0;
-     }
-.productAttributeRow { display: inline-block; }
-/* start commented backslash hack \*/
-* html .productAttributeRow { height: 1%; }
-.productAttributeRow { display: block; }
-/* close commented backslash hack */
\ No newline at end of file
diff --git a/assets/css/scss/styles.scss b/assets/css/scss/styles.scss
deleted file mode 100644
index 21c8d93..0000000
--- a/assets/css/scss/styles.scss
+++ /dev/null
@@ -1,54 +0,0 @@
-//@import "foundation/common/ratios";
-
-// sproutcommerce settings
-@import "theme-settings";
-
-// foundation base files
-@import "compass/css3";
-@import "foundation/settings";
-@import "foundation/functions/all";
-
-// Control which mixins you have access too
-@import "foundation/mixins/clearfix";
-@import "foundation/mixins/css-triangle";
-@import "foundation/mixins/font-size";
-
-// Must include next two for semantic grid to work
-@import "foundation/mixins/respond-to";
-@import "foundation/mixins/semantic-grid";
-
-@import "modular-scale";
-@import "foundation/common/globals";
-
-// Must include the grid for any responsiveness
-@import "foundation/components/grid";
-
-// Control which common styles get compiled
-@import "foundation/common/typography";
-@import "foundation/common/forms";
-
-// Control which components you get if customizing
-@import "foundation/components/modules/buttons";
-@import "foundation/components/modules/tabs";
-@import "foundation/components/modules/ui";
-@import "foundation/components/modules/topbar";
-@import "foundation/components/modules/navbar";
-@import "foundation/components/modules/orbit";
-@import "foundation/components/modules/reveal";
-@import "foundation/components/modules/offcanvas";
-
-// Media Queries Overrides
-@import "foundation/components/modules/mqueries";
-
-// sproutcommerce mixins
-@import "mixins";
-
-// plugins (sproutcommerce added)
-@import "plugin/font-awesome";
-@import "plugin/jquery.zoomie";
-@import "plugin/jquery.fancybox";
-@import "plugin/imodal";
-@import "plugin/product.attributes";
-
-// sproutcommerce theme file
-@import "theme";
diff --git a/assets/images/foundation/orbit/bullets.jpg b/assets/images/foundation/orbit/bullets.jpg
deleted file mode 100644
index f3c734f..0000000
Binary files a/assets/images/foundation/orbit/bullets.jpg and /dev/null differ
diff --git a/assets/images/foundation/orbit/left-arrow-small.png b/assets/images/foundation/orbit/left-arrow-small.png
deleted file mode 100644
index b3ff033..0000000
Binary files a/assets/images/foundation/orbit/left-arrow-small.png and /dev/null differ
diff --git a/assets/images/foundation/orbit/left-arrow.png b/assets/images/foundation/orbit/left-arrow.png
deleted file mode 100644
index 7e3f2d6..0000000
Binary files a/assets/images/foundation/orbit/left-arrow.png and /dev/null differ
diff --git a/assets/images/foundation/orbit/loading.gif b/assets/images/foundation/orbit/loading.gif
deleted file mode 100644
index 969f505..0000000
Binary files a/assets/images/foundation/orbit/loading.gif and /dev/null differ
diff --git a/assets/images/foundation/orbit/mask-black.png b/assets/images/foundation/orbit/mask-black.png
deleted file mode 100644
index 02f3fba..0000000
Binary files a/assets/images/foundation/orbit/mask-black.png and /dev/null differ
diff --git a/assets/images/foundation/orbit/pause-black.png b/assets/images/foundation/orbit/pause-black.png
deleted file mode 100644
index 5fb0875..0000000
Binary files a/assets/images/foundation/orbit/pause-black.png and /dev/null differ
diff --git a/assets/images/foundation/orbit/right-arrow-small.png b/assets/images/foundation/orbit/right-arrow-small.png
deleted file mode 100644
index e4c9533..0000000
Binary files a/assets/images/foundation/orbit/right-arrow-small.png and /dev/null differ
diff --git a/assets/images/foundation/orbit/right-arrow.png b/assets/images/foundation/orbit/right-arrow.png
deleted file mode 100644
index 7c3199a..0000000
Binary files a/assets/images/foundation/orbit/right-arrow.png and /dev/null differ
diff --git a/assets/images/foundation/orbit/rotator-black.png b/assets/images/foundation/orbit/rotator-black.png
deleted file mode 100644
index 8df4d31..0000000
Binary files a/assets/images/foundation/orbit/rotator-black.png and /dev/null differ
diff --git a/assets/images/foundation/orbit/timer-black.png b/assets/images/foundation/orbit/timer-black.png
deleted file mode 100644
index 02f3fba..0000000
Binary files a/assets/images/foundation/orbit/timer-black.png and /dev/null differ
diff --git a/assets/images/select2/select2.png b/assets/images/select2/select2.png
deleted file mode 100644
index 1d804ff..0000000
Binary files a/assets/images/select2/select2.png and /dev/null differ
diff --git a/assets/images/select2/select2x2.png b/assets/images/select2/select2x2.png
deleted file mode 100644
index 4bdd5c9..0000000
Binary files a/assets/images/select2/select2x2.png and /dev/null differ
diff --git a/assets/images/select2/spinner.gif b/assets/images/select2/spinner.gif
deleted file mode 100644
index 5b33f7e..0000000
Binary files a/assets/images/select2/spinner.gif and /dev/null differ
diff --git a/dev-notes.txt b/dev-notes.txt
deleted file mode 100644
index b1c33bd..0000000
--- a/dev-notes.txt
+++ /dev/null
@@ -1,180 +0,0 @@
-***************
-DEV ENVIRONMENT
-***************
-
-*******************
-USEFUL RESOURCES:
-*******************
-	http://compass-style.org/help
-	http://foundation.zurb.com/docs/v/3.2.5/
-	http://foundation.zurb.com/docs/v/3.2.5/sass-settings.php
-	http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html
-	http://validator.w3.org/check?uri=sproutcommerce-reactive.mybigcommerce.com
-
-*******************
-SPROUT THEMING INFO.
-*******************
-
-	- Main css file is called styles.css
-		- On BC this file can be found in template/Styles/styles.css
-		- This is the file generated by compass from sprout-assets/css/scss/styles.scss
-			- Take a close look at styles.scss to see what other scss files are included.
-				- The main files you will deal with are:
-					- sprout-assets/css/scss/_reactive.scss (for general changes)
-					- sprout-assets/css/scss/_base-settings.scss (for general scss variable changes)
-					- sprout-assets/css/scss/themes/Athletic/_theme.scss (for scss changes specific to Athletic)
-					- sprout-assets/css/scss/themes/Athletic/_theme-settings.scss (for scss variable changes specific to Athletic)
-					
-*******************
-SPROUT GITHUB INFO.
-*******************
-
-	Premium Themes Repo. : https://github.com/sproutcommerce/premium-themes
-		- Branches:
-			- bc-reactive (base Reactive template as released by BC)
-				- sprout-reactive (improved Reactive)
-					- Athletic
-					
-		- Adding general changes (for sprout-reactive AND Athletic)
-			
-			// prepare for changes
-			git checkout sprout-reactive			// start on sprout-reactive branch
-			git checkout -b NewBranchForChanges		// create new branch for changes. commit your edits on this branch
-			
-			// merge changes into sprout-reactive
-			git checkout sprout-reactive
-			git merge NewBranchForChanges
-			git push origin sprout-reactive
-			
-			// merge changes into Athletic
-			git checkout Athletic
-			git merge NewBranchForChanges
-			git push origin Athletic
-			
-		- Adding changes for Athletic only
-			
-			// prepare for changes
-			git checkout Athletic
-			git checkout -b NewBranchForChanges		// create new branch for changes. commit your edits on this branch
-			
-			// merge changes into Athletic
-			git checkout Athletic
-			git merge NewBranchForChanges
-			git push origin Athletic
-
-*******************
-COMMAND WINDOW BASICS
-*******************
-	Windows:
-		- Opening a command window: Start Menu -> Search for "com" -> Click "Command Prompt"
-		- Opening a command window to a particular directory: http://screencast.com/t/sTuNuB4jJ
-		- Common Commands:
-			cd - change directory e.g. "cd SVN/sprout-assets"
-			cd /D - change to a directory on a different drive e.g. "cd /D E:/SVN/sprout-assets"
-			dir - list contents of current directory
-			
-	OSX
-		- Opening a terminal window: Click on spotlight -> Type "terminal" -> Click "Terminal"
-		- Opening a terminal window to a particular directory: http://screencast.com/t/ZqN3oYNRiq
-		- Common Commands:
-			cd - change directory e.g. "cd SVN/sprout-assets"
-			ls - list contents of current directory
-
-*******************
-TO EDIT SPROUT CSS
-*******************
-	1. Install Environment Dependencies
-		a) Ruby:
-			i) If you are running OSX you probably have ruby already.
-			ii) Run command "ruby -v" to see if you have it or test if it installed correctly (tip: you may have to re-open your command window after installing ruby)
-			iii) Installer: http://rubyinstaller.org/downloads/
-			iv) When running the installer make sure to select 'Add Ruby executables to your PATH' e.g. http://screencast.com/t/NEdlIUtkY
-		b) Compass:
-			i) Run command "gem update --system"
-			ii) Run command "gem install compass"
-			iii) Compass should now be installed. More information: http://compass-style.org/install
-		c) Foundation:
-			i) Run command "gem install zurb-foundation -v 3.2.5"
-			ii) Foundation should now be installed. More information: http://foundation.zurb.com/docs/v/3.2.5/compass.php
-	2. Prepare Environment
-		a) Open a command window to the directory sprout-assets/css
-		c) Create new compass project
-			i) Run command "compass create . -r zurb-foundation --using foundation"
-			ii) This will create several files in the current directory.
-				Some of these files are not needed. Delete the following files/folders from sprout-assets/css
-					- app.css
-					- humans.txt
-					- index.html
-					- MIT-LICENSE.txt
-					- robots.txt
-					- scss/_settings.scss
-					- scss/app.scss
-					- js (directory)
-	3. Run Compass (now that the environment is set up, this is the step you will begin on in future)
-		a) Open a command window to the directory sprout-assets/css
-		b) Run command "compass watch"
-		c) Compass produces sprout.min.css
-	4. The CSS environment is now ready. Do not edit sprout.min.css, instead edit SCSS files in sprout-assets/css/scss. Any changes you make will be detected by compass watch and it will compile and output 'sprout.min.css'. This file can then be uploaded onto Bigcommerce.
-	5. See http://sass-lang.com for help with SCSS.
-
-
-*******************
-TO EDIT REACTIVE JS
-*******************
-	- Reactive JS is not minified and is for the most part included in the template file Panels/Footer.html. Most of the javascript relevant to Reactive can be found in template.js: http://screencast.com/t/vOVDjRV1C1Eu
-	
-
-*******************
-INSTALLING TEMPLATE ON BIGCOMMERCE
-*******************
-
-IN BIGCOMMERCE ADMIN PANEL
--Design
---Set template to base theme: Classic (white)
---Configure Carousel/Social Media Icons
---Upload Logo
---Turn off mobile template: http://screencast.com/t/KIfms5WG9
---Upload favicon
-
--Settings > Store > Display Tab
---Cart Quantity Boxes: Text Box
---'Add to Cart' Action: Take Them to Their Shopping Cart
---Product Breadcrumbs: Show One Only
---Enable Product Tabs?: Yes, enable product tabs
---Category Display Mode: Show Products In A Grid
---Category Menu Style: Show categories in a simple list
---Menu Display Depth: 4
-
--Settings > Store > Images Tab
---Storewide Thumbnail: 200x200
---Product Page Image: 600x600
---Product Page Thumbnail: 200x200
---Product Zoom Image: 1280x1280
---Show Tiny Thumbnails?: Yes
---Enable Image Zoom? No
-
--Settings > Store > Search Tab
---Product Display Mode: Show Products In A Grid
-
-IN BIGCOMMERCE FTP
--Delete all files in /template
--Upload into /template all files from /yourGIT/template
-
-
-
-*******************
-SPROUT COMMERCE MODULES
-*******************
-
-
-
-
-*******************
-CREDITS:
-*******************
-	http://sproutcommerce.com
-	http://bigcommerce.com
-	http://jquery.com
-	http://sass-lang.com
-	http://foundation.zurb.com
-	http://ivaynberg.github.com/select2
\ No newline at end of file
diff --git a/template/403.html b/template/403.html
old mode 100755
new mode 100644
diff --git a/template/404.html b/template/404.html
old mode 100755
new mode 100644
diff --git a/template/Emails/Snippets/ACCartContents.html b/template/Emails/Snippets/ACCartContents.html
new file mode 100644
index 0000000..298a6df
--- /dev/null
+++ b/template/Emails/Snippets/ACCartContents.html
@@ -0,0 +1,11 @@
+<tr>
+	<td>
+		<a href="%%GLOBAL_ProductUrl%%" style="border: 0;">
+			<img src="%%GLOBAL_ProductThumbnailUrl%%" style="padding:0px 10px 10px 0px; border: 0; width: 50px;" alt="%%GLOBAL_ProductName%%" />
+		</a>
+	</td>
+	<td style="vertical-align: middle;">
+		<p>%%GLOBAL_ProductQuantity%% x <a href="%%GLOBAL_ProductUrl%%">%%GLOBAL_ProductName%%</a></p>
+		<p>%%GLOBAL_ProductPrice%% each</p>
+	</td>
+</tr>
\ No newline at end of file
diff --git a/template/Emails/Snippets/ACCartDetails.html b/template/Emails/Snippets/ACCartDetails.html
new file mode 100644
index 0000000..f25caab
--- /dev/null
+++ b/template/Emails/Snippets/ACCartDetails.html
@@ -0,0 +1,17 @@
+<h3>%%LNG_AC_ContactDetailsSubheading%%</h3>
+
+<p>Existing Customer? %%GLOBAL_AC_ExistingCustomer%%</p>
+<p>
+	Name: %%GLOBAL_AC_CustomerName%%<br/>
+	Email: %%GLOBAL_AC_CustomerEmail%%<br/>
+	Phone: %%GLOBAL_AC_CustomerPhone%%<br/>
+	Address: %%GLOBAL_AC_CustomerAddress%%<br/>
+    Date %%GLOBAL_AC_ModifiedType%%: %%GLOBAL_AC_DateModified%%<br/>
+    Total value when abandoned: %%GLOBAL_AC_ValueWhenAbandoned%%
+</p>
+
+<h3>%%LNG_AC_CartContentsSubheading%%</h3>
+
+<p><table>%%GLOBAL_AC_CartContents%%</table></p>
+<p><b>Current base product prices are shown</b></p>
+<hr/>
diff --git a/template/Emails/Snippets/ACCouponBox.html b/template/Emails/Snippets/ACCouponBox.html
new file mode 100644
index 0000000..a68d7d3
--- /dev/null
+++ b/template/Emails/Snippets/ACCouponBox.html
@@ -0,0 +1 @@
+<div style="background:#fff1a8; padding:10px; margin:20px 0px 20px 0px">%%LNG_AC_CouponCodeBeforeText%%<strong>%%GLOBAL_AC_CouponCode%%</strong>%%LNG_AC_CouponCodeAfterText%%%%GLOBAL_AC_CouponCodeText%%</div>
\ No newline at end of file
diff --git a/template/Emails/Snippets/AddressLabel.html b/template/Emails/Snippets/AddressLabel.html
new file mode 100644
index 0000000..b6719cf
--- /dev/null
+++ b/template/Emails/Snippets/AddressLabel.html
@@ -0,0 +1,7 @@
+<strong>%%GLOBAL_ShipFullName%%</strong>
+%%GLOBAL_ShipCompany%%
+<br />
+%%GLOBAL_ShipAddressLines%%<br />
+%%GLOBAL_ShipSuburb%%, %%GLOBAL_ShipState%% %%GLOBAL_ShipZip%%<br/>
+%%GLOBAL_ShipCountry%%<br />
+%%GLOBAL_ShipPhone%%
\ No newline at end of file
diff --git a/template/Emails/Snippets/ContactFormField.html b/template/Emails/Snippets/ContactFormField.html
new file mode 100644
index 0000000..7ac6d35
--- /dev/null
+++ b/template/Emails/Snippets/ContactFormField.html
@@ -0,0 +1,4 @@
+<tr>
+	<td style="font-family: Arial; font-size: 12px;" width="25%"><strong>%%GLOBAL_FormField%%:</strong></td> <td style="font-family: Arial; font-size: 12px;">%%GLOBAL_FormValue%%</td>
+</tr>
+
diff --git a/template/Emails/Snippets/EmailFooter.html b/template/Emails/Snippets/EmailFooter.html
new file mode 100644
index 0000000..5f7a590
--- /dev/null
+++ b/template/Emails/Snippets/EmailFooter.html
@@ -0,0 +1,9 @@
+<p style="margin-top: 12px">
+	<strong>%%GLOBAL_StoreName%%</strong>
+	<br />
+	<a href="%%GLOBAL_ShopPathNormal%%/">%%GLOBAL_ShopPathNormal%%/</a>
+</p>
+<hr size="1" style="height: 1px; border-style: none; color: #444; background: #000; margin-top: 8px" />
+<div style="font-size: 11px; color: #444">
+	%%GLOBAL_StoreName%% is powered by Bigcommerce. <a href="http://www.bigcommerce.com/">Launch your own store for free</a> with Bigcommerce.
+</div>
diff --git a/template/Emails/Snippets/InvoiceCartItem.html b/template/Emails/Snippets/InvoiceCartItem.html
new file mode 100644
index 0000000..badb28b
--- /dev/null
+++ b/template/Emails/Snippets/InvoiceCartItem.html
@@ -0,0 +1,17 @@
+<table width="100%" cellspacing="0" cellpadding="0" style = "border: 1px solid #c7d7db;">
+	<tr>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA">
+			<strong>%%GLOBAL_ProductName%%</strong>
+			%%GLOBAL_ProductOptions%%
+			%%GLOBAL_ProductAttributes%%
+			<br />
+			%%GLOBAL_ExpectedReleaseDate%%
+			<table style="font-family: Arial; font-size:11px">%%GLOBAL_CartProductFields%%</table>
+			%%GLOBAL_EventDate%%
+		</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" width="100">%%GLOBAL_ProductSku%%</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" width="100">%%GLOBAL_ProductQuantity%%</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" width="150">%%GLOBAL_ProductPrice%%</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" align="right" width="200"><strong>%%GLOBAL_ProductTotal%%</strong></td>
+	</tr>
+</table>
\ No newline at end of file
diff --git a/template/Emails/Snippets/InvoiceCartItemNoSKU.html b/template/Emails/Snippets/InvoiceCartItemNoSKU.html
new file mode 100644
index 0000000..1202640
--- /dev/null
+++ b/template/Emails/Snippets/InvoiceCartItemNoSKU.html
@@ -0,0 +1,16 @@
+<table width="100%" cellspacing="0" cellpadding="0" style = "border: 1px solid #c7d7db;">
+	<tr>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA">
+			<strong>%%GLOBAL_ProductName%%</strong>
+			%%GLOBAL_ProductOptions%%
+			%%GLOBAL_ProductAttributes%%
+			<br />
+			%%GLOBAL_ExpectedReleaseDate%%
+			<table style="font-family: Arial; font-size:11px">%%GLOBAL_CartProductFields%%</table>
+			%%GLOBAL_EventDate%%
+		</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" width="100">%%GLOBAL_ProductQuantity%%</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" width="150">%%GLOBAL_ProductPrice%%</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" align="right" width="200"><strong>%%GLOBAL_ProductTotal%%</strong></td>
+	</tr>
+</table>
\ No newline at end of file
diff --git a/template/Emails/Snippets/InvoiceOrderComment.html b/template/Emails/Snippets/InvoiceOrderComment.html
new file mode 100644
index 0000000..3e39033
--- /dev/null
+++ b/template/Emails/Snippets/InvoiceOrderComment.html
@@ -0,0 +1,4 @@
+		<div style="font-size:12px;">
+			<h3 style='font-size:18px'>%%LNG_OrderComments%%</h3>
+			%%GLOBAL_OrderComments%%
+		</div>
\ No newline at end of file
diff --git a/template/Emails/Snippets/InvoicePaymentMethod.html b/template/Emails/Snippets/InvoicePaymentMethod.html
new file mode 100644
index 0000000..4308a5c
--- /dev/null
+++ b/template/Emails/Snippets/InvoicePaymentMethod.html
@@ -0,0 +1,6 @@
+<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="4">
+	<tr>
+		<td align="right" style="font-family: Arial; font-size:12px">%%LNG_PaymentProviderName%%:</td>
+		<td width="100" align="right" style="font-family:Arial; font-size:12px">%%GLOBAL_PaymentProviderMethod%%</td>
+	</tr>
+</table>
\ No newline at end of file
diff --git a/template/Emails/Snippets/InvoicePendingPaymentDetails.html b/template/Emails/Snippets/InvoicePendingPaymentDetails.html
new file mode 100644
index 0000000..a257c38
--- /dev/null
+++ b/template/Emails/Snippets/InvoicePendingPaymentDetails.html
@@ -0,0 +1,8 @@
+<h3 style="font-size:18px">%%LNG_HeresHowtoPayforYourOrderUC%%</h3>
+<div style="font-size:12px">
+	%%LNG_PayForYourOrderHelp%%:
+	<br /><br />
+	%%LNG_YourOrderTotalIs%% %%GLOBAL_PaymentGatewayAmount%%
+	<br /><br />
+	%%GLOBAL_PaymentMessage%%
+</div>
diff --git a/template/Emails/Snippets/InvoicePendingPaymentNotice.html b/template/Emails/Snippets/InvoicePendingPaymentNotice.html
new file mode 100644
index 0000000..fb449b7
--- /dev/null
+++ b/template/Emails/Snippets/InvoicePendingPaymentNotice.html
@@ -0,0 +1,5 @@
+<br />
+<div style="width:100%; padding:10px; background-color:#FFEFEF">
+	<img src="%%GLOBAL_IMG_PATH%%/IcoError.gif" alt="" />&nbsp;
+	%%LNG_InvoicePendingPaymentText%%
+</div>
diff --git a/template/Emails/Snippets/InvoiceProductColumns.html b/template/Emails/Snippets/InvoiceProductColumns.html
new file mode 100644
index 0000000..d8c9039
--- /dev/null
+++ b/template/Emails/Snippets/InvoiceProductColumns.html
@@ -0,0 +1,9 @@
+		<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="0">
+			<tr>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap>%%LNG_CartItems%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="100">%%LNG_SKU%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="100">%%LNG_Qty%%</td>
+				<td style="font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="150">%%LNG_ItemPrice%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="200" align="right">%%LNG_ItemTotal%%</td>
+			</tr>
+		</table>
\ No newline at end of file
diff --git a/template/Emails/Snippets/InvoiceProductColumnsNoSKU.html b/template/Emails/Snippets/InvoiceProductColumnsNoSKU.html
new file mode 100644
index 0000000..5db35d4
--- /dev/null
+++ b/template/Emails/Snippets/InvoiceProductColumnsNoSKU.html
@@ -0,0 +1,8 @@
+		<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="0">
+			<tr>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap>%%LNG_CartItems%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="100">%%LNG_Qty%%</td>
+				<td style="font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="150">%%LNG_ItemPrice%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="200" align="right">%%LNG_ItemTotal%%</td>
+			</tr>
+		</table>
\ No newline at end of file
diff --git a/template/Emails/Snippets/InvoiceProductShipRow.html b/template/Emails/Snippets/InvoiceProductShipRow.html
new file mode 100644
index 0000000..71d2ac3
--- /dev/null
+++ b/template/Emails/Snippets/InvoiceProductShipRow.html
@@ -0,0 +1,5 @@
+		<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="0">
+			<tr>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap>%%GLOBAL_AddressLine%%</td>
+			</tr>
+		</table>
diff --git a/template/Emails/Snippets/InvoiceTotalRow.html b/template/Emails/Snippets/InvoiceTotalRow.html
new file mode 100644
index 0000000..c58bb33
--- /dev/null
+++ b/template/Emails/Snippets/InvoiceTotalRow.html
@@ -0,0 +1,6 @@
+<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="4">
+	<tr>
+		<td align="right" style="font-family: Arial; font-size:12px"><strong>%%GLOBAL_label%%:</strong></td>
+		<td width="100" align="right" style="font-family:Arial; font-size:12px"><strong>%%GLOBAL_value%%</strong></td>
+	</tr>
+</table>
\ No newline at end of file
diff --git a/template/Emails/Snippets/OrderNoPaymentTaken.html b/template/Emails/Snippets/OrderNoPaymentTaken.html
new file mode 100644
index 0000000..d79dd7b
--- /dev/null
+++ b/template/Emails/Snippets/OrderNoPaymentTaken.html
@@ -0,0 +1,4 @@
+		<div style="width:100%; padding:10px; background-color:#FFF4EA">
+			<img src="%%GLOBAL_IMG_PATH%%/IcoError.gif" />&nbsp;
+			%%GLOBAL_NoPaymentTakenModuleInTestMode%%
+		</div>
\ No newline at end of file
diff --git a/template/Emails/Snippets/OrderRefundedAmountRow.html b/template/Emails/Snippets/OrderRefundedAmountRow.html
new file mode 100644
index 0000000..ad0fcde
--- /dev/null
+++ b/template/Emails/Snippets/OrderRefundedAmountRow.html
@@ -0,0 +1,4 @@
+<tr>
+    <td style="font-family: Arial; font-size: 13px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_OrderRefundedAmount%%:</td>
+    <td style="font-family: Arial; font-size: 13px;">%%GLOBAL_OrderRefundAmount%%</td>
+</tr>
diff --git a/template/Emails/Snippets/OrderTrackingLink.html b/template/Emails/Snippets/OrderTrackingLink.html
new file mode 100644
index 0000000..3fe965f
--- /dev/null
+++ b/template/Emails/Snippets/OrderTrackingLink.html
@@ -0,0 +1,8 @@
+<p>
+	<span style="font-family:Arial; font-size:12px">
+		%%LNG_OrderTrackingNoIs%% <strong><em>%%GLOBAL_OrderTrackingNo%%</em></strong>
+	</span>
+	<span><br />
+		<a href="%%GLOBAL_TrackURL%%" target="_blank"  style="font-family:Arial; font-size:12px">%%LNG_ClickHereToTrackYourOrder%%</a>
+	</span>
+</p>
\ No newline at end of file
diff --git a/template/Emails/Snippets/ProductReviewItem.html b/template/Emails/Snippets/ProductReviewItem.html
new file mode 100644
index 0000000..11488a9
--- /dev/null
+++ b/template/Emails/Snippets/ProductReviewItem.html
@@ -0,0 +1 @@
+<li>%%GLOBAL_ProductName%% - <a href="%%GLOBAL_ProductReviewLink%%">%%LNG_ProductReviewLinkText%%</a></li>
\ No newline at end of file
diff --git a/template/Emails/Snippets/ReturnConfirmationItem.html b/template/Emails/Snippets/ReturnConfirmationItem.html
new file mode 100644
index 0000000..4ca5f0e
--- /dev/null
+++ b/template/Emails/Snippets/ReturnConfirmationItem.html
@@ -0,0 +1,8 @@
+<table width="100%" cellspacing="0" cellpadding="0">
+	<tr>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA">
+			<strong>%%GLOBAL_ProductName%%</strong>
+		</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA">%%GLOBAL_ProductQty%%</td>
+	</tr>
+</table>
diff --git a/template/Emails/Snippets/StatusCompleteDownloadItem.html b/template/Emails/Snippets/StatusCompleteDownloadItem.html
new file mode 100644
index 0000000..4e8104e
--- /dev/null
+++ b/template/Emails/Snippets/StatusCompleteDownloadItem.html
@@ -0,0 +1,12 @@
+<table width="100%" cellspacing="0" cellpadding="0">
+	<tr>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA">
+			<a href="%%GLOBAL_DownloadsLink%%">
+			<strong>%%GLOBAL_ProductName%%</strong>
+			%%GLOBAL_ProductOptions%%
+			</a>
+		</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" width="100" align="center">%%GLOBAL_ProductQuantity%%</td>
+		<td style="padding:5px; font-size:12px; border-bottom:solid 1px #CACACA" width="100" align="right"><strong><a href="%%GLOBAL_DownloadsLink%%">%%LNG_DownloadLink%%</a></strong></td>
+	</tr>
+</table>
diff --git a/template/Emails/abandoned_cart_email.html b/template/Emails/abandoned_cart_email.html
new file mode 100644
index 0000000..bcd01b1
--- /dev/null
+++ b/template/Emails/abandoned_cart_email.html
@@ -0,0 +1,9 @@
+<html><body style="font-family:Helvetica; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		%%GLOBAL_AC_EmailBody%%
+
+		%%GLOBAL_EmailFooter%%
+		<br/>
+		<p><a href="%%GLOBAL_AC_UnsubscribeLink%%">%%LNG_AC_EmailUnsubscribe%%</a>%%LNG_AC_EmailUnsubscribeSuffix%%</p>
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/createaccount_email.html b/template/Emails/createaccount_email.html
new file mode 100644
index 0000000..5a39894
--- /dev/null
+++ b/template/Emails/createaccount_email.html
@@ -0,0 +1,20 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_ThanksForRegisteringAt%% %%GLOBAL_StoreName%%</h2>
+
+		<p>%%LNG_Hi%% %%GLOBAL_FirstName%%,</p>
+
+		<p>%%LNG_ThanksForRegisteringAtIntro%%</p>
+
+		<p>
+			<strong>%%LNG_EmailAddress%%:</strong> %%GLOBAL_Email%%<br />
+			<strong>%%LNG_Password%%:</strong> %%GLOBAL_Password%%
+		</p>
+
+		<p>%%LNG_ThanksForRegisteringEmailLogin%%</p>
+
+		<p>%%LNG_ThanksForRegisteringEmailHelp%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/createguestaccount_email.html b/template/Emails/createguestaccount_email.html
new file mode 100644
index 0000000..50c0dc4
--- /dev/null
+++ b/template/Emails/createguestaccount_email.html
@@ -0,0 +1,15 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_ThanksForRegisteringAt%% %%GLOBAL_StoreName%%</h2>
+
+		<p>%%LNG_Hi%% %%GLOBAL_FirstName%%,</p>
+
+		<p>%%LNG_ThanksForRegisteringAtIntro%%</p>
+
+        <p><a href="%%GLOBAL_NewGuestAccountResetLink%%">%%GLOBAL_NewGuestAccountResetLink%%</a></p>
+
+		<p>%%LNG_ThanksForRegisteringEmailHelp%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/ebay_listing_aborted.html b/template/Emails/ebay_listing_aborted.html
new file mode 100644
index 0000000..2a4505a
--- /dev/null
+++ b/template/Emails/ebay_listing_aborted.html
@@ -0,0 +1,11 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+
+		<p>%%GLOBAL_Ebay_Listing_Abort_Email_Message_1%%</p>
+
+		<p>%%GLOBAL_Ebay_Listing_Abort_Email_Message_2%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/ebay_listing_failed.html b/template/Emails/ebay_listing_failed.html
new file mode 100644
index 0000000..0b688a4
--- /dev/null
+++ b/template/Emails/ebay_listing_failed.html
@@ -0,0 +1,14 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+		<p>%%GLOBAL_Ebay_Listing_Error_Email_Message_1%%</p>
+
+		<p>%%GLOBAL_Ebay_Listing_Error_Email_Error_Heading%%</p>
+
+		<p><strong>%%GLOBAL_Ebay_Listing_Error_Email_Error%%</strong></p>
+
+		<p>%%GLOBAL_Ebay_Listing_Error_Email_Error_Footer%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/ebay_listing_finished.html b/template/Emails/ebay_listing_finished.html
new file mode 100644
index 0000000..b0bb7f3
--- /dev/null
+++ b/template/Emails/ebay_listing_finished.html
@@ -0,0 +1,19 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+		<p>%%GLOBAL_Ebay_Listing_End_Email_Message_1%%</p>
+		<p>%%GLOBAL_Ebay_Listing_End_Email_Message_2%%</p>
+		<p>%%GLOBAL_Ebay_Listing_End_Email_Message_3%%</p>
+		<p>%%GLOBAL_Ebay_Listing_End_Email_Message_4%%</p>
+
+		<p>%%GLOBAL_Ebay_Listing_End_Email_Errors_Heading%%</p>
+
+		%%GLOBAL_Ebay_Listing_End_Email_Errors%%
+
+		<p>%%GLOBAL_Ebay_Listing_End_Email_Warnings_Heading%%</p>
+
+		%%GLOBAL_Ebay_Listing_End_Email_Warnings%%
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/email_integration_export_aborted.html b/template/Emails/email_integration_export_aborted.html
new file mode 100644
index 0000000..dd6c3f1
--- /dev/null
+++ b/template/Emails/email_integration_export_aborted.html
@@ -0,0 +1,11 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+
+		<p>%%GLOBAL_EmailIntegration_Export_Abort_Email_Message_1%%</p>
+
+		<p>%%GLOBAL_EmailIntegration_Export_Abort_Email_Message_2%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/email_integration_export_failed.html b/template/Emails/email_integration_export_failed.html
new file mode 100644
index 0000000..02fadd9
--- /dev/null
+++ b/template/Emails/email_integration_export_failed.html
@@ -0,0 +1,14 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+		<p>%%GLOBAL_EmailIntegration_Export_Error_Email_Message_1%%</p>
+
+		<p>%%GLOBAL_EmailIntegration_Export_Error_Email_Error_Heading%%</p>
+
+		<p><strong>%%GLOBAL_EmailIntegration_Export_Error_Email_Error%%</strong></p>
+
+		<p>%%GLOBAL_EmailIntegration_Export_Error_Email_Error_Footer%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/email_integration_export_finished.html b/template/Emails/email_integration_export_finished.html
new file mode 100644
index 0000000..dc83e93
--- /dev/null
+++ b/template/Emails/email_integration_export_finished.html
@@ -0,0 +1,15 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+		<p>%%GLOBAL_EmailIntegration_Export_End_Email_Message_1%%</p>
+		<p>%%GLOBAL_EmailIntegration_Export_End_Email_Message_2%%</p>
+		<p>%%GLOBAL_EmailIntegration_Export_End_Email_Message_3%%</p>
+		<p>%%GLOBAL_EmailIntegration_Export_End_Email_Message_4%%</p>
+
+		<p>%%GLOBAL_EmailIntegration_Export_End_Email_Errors_Heading%%</p>
+
+		%%GLOBAL_EmailIntegration_Export_End_Email_Errors%%
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/email_integration_notice_email.html b/template/Emails/email_integration_notice_email.html
new file mode 100644
index 0000000..26b1297
--- /dev/null
+++ b/template/Emails/email_integration_notice_email.html
@@ -0,0 +1,33 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailIntegrationNotice_Header%%</h2>
+
+		<p>%%GLOBAL_EmailIntegrationNotice_Intro%%</p>
+
+		<p>%%GLOBAL_EmailIntegrationNotice_Error%%</p>
+
+		<ul><li>%%GLOBAL_EmailIntegrationNotice_Message%%</li></ul>
+
+		<p>%%GLOBAL_EmailIntegrationNotice_Time%%</p>
+
+		<p>%%GLOBAL_EmailIntegrationNotice_Details%%</p>
+
+		<p><em>%%GLOBAL_EmailIntegrationNotice_Type%%</em><p>
+
+		%%GLOBAL_EmailIntegrationNotice_Subscription%%
+
+		<p>%%GLOBAL_EmailIntegrationNotice_CommonCauses%%</p>
+
+		<ul>
+			<li><em>%%GLOBAL_EmailIntegrationNotice_Cause1_Intro%%</em> %%GLOBAL_EmailIntegrationNotice_Cause1_Detail%%</li>
+			<li><em>%%GLOBAL_EmailIntegrationNotice_Cause2_Intro%%</em> %%GLOBAL_EmailIntegrationNotice_Cause2_Detail%%</li>
+			<li><em>%%GLOBAL_EmailIntegrationNotice_Cause3_Intro%%</em> %%GLOBAL_EmailIntegrationNotice_Cause3_Detail%%</li>
+			<li><em>%%GLOBAL_EmailIntegrationNotice_Cause4_Intro%%</em> %%GLOBAL_EmailIntegrationNotice_Cause4_Detail%%</li>
+			<li><em>%%GLOBAL_EmailIntegrationNotice_Cause5_Intro%%</em> %%GLOBAL_EmailIntegrationNotice_Cause5_Detail%%</li>
+		</ul>
+
+		<p>%%GLOBAL_EmailIntegrationNotice_Closing%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/email_integration_ruledeleted_email.html b/template/Emails/email_integration_ruledeleted_email.html
new file mode 100644
index 0000000..54890e3
--- /dev/null
+++ b/template/Emails/email_integration_ruledeleted_email.html
@@ -0,0 +1,21 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesDeletion_1%%</p>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesDeletion_2%%</p>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesDeletion_Lists%%</p>
+
+		<ul>
+			%%GLOBAL_DeletedLists%%
+		</ul>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesDeletion_3%%</p>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesDeletion_4%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/email_integration_ruleupdated_email.html b/template/Emails/email_integration_ruleupdated_email.html
new file mode 100644
index 0000000..2549808
--- /dev/null
+++ b/template/Emails/email_integration_ruleupdated_email.html
@@ -0,0 +1,21 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesUpdate_1%%</p>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesUpdate_2%%</p>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesUpdate_MergeFields%%</p>
+
+		<ul>
+			%%GLOBAL_MergeFieldsList%%
+		</ul>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesUpdate_3%%</p>
+
+		<p>%%GLOBAL_NoticeOfEmailIntegrationRulesUpdate_4%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/general_email.html b/template/Emails/general_email.html
new file mode 100644
index 0000000..d532704
--- /dev/null
+++ b/template/Emails/general_email.html
@@ -0,0 +1,8 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_EmailHeader%%</h2>
+		<p>%%GLOBAL_EmailMessage%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
diff --git a/template/Emails/giftcertificate_email.html b/template/Emails/giftcertificate_email.html
new file mode 100644
index 0000000..802ed37
--- /dev/null
+++ b/template/Emails/giftcertificate_email.html
@@ -0,0 +1,14 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_GiftCertificateEmailYouHaveReceived%% %%GLOBAL_StoreName%%</h2>
+
+		<p>%%LNG_Dear%% %%GLOBAL_ToName%%,</p>
+
+		<p>%%GLOBAL_Intro%% %%GLOBAL_ExpiryInfo%% %%LNG_GiftCertificateEmailInstructions%%</p>
+
+		<p>%%LNG_GiftCertificateEmailAttached%% %%LNG_GiftCertificateEmailWarning%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/template/Emails/invoice_email.html b/template/Emails/invoice_email.html
new file mode 100644
index 0000000..3d42b4e
--- /dev/null
+++ b/template/Emails/invoice_email.html
@@ -0,0 +1,44 @@
+<html><body style="font-family:Arial; font-size:12px; margin: 0; padding: 20px;">
+	<div>
+		%%GLOBAL_NoPaymentTaken%%
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_ThanksForYourOrder%%</h2>
+		<div style="width:100%; padding:10px; background-color:#FFF4EA">
+			<img src="%%GLOBAL_IMG_PATH%%/InfoMessage.gif" />&nbsp;
+			%%LNG_YourOrderIDIs%% <strong>#%%GLOBAL_OrderNumber%%</strong>. %%GLOBAL_ViewOrderStatusMsg%%
+		</div>
+		%%GLOBAL_PendingPaymentNotice%%
+		<br />
+		<table width="100%" border="0" cellspacing="0" cellpadding="0">
+			<tr>
+				<td id="Left" width="50%" valign="top">
+					<h3 style="font-family:Arial; font-size:18px">%%LNG_ShippingAddress%%</h3>
+					<div style="font-family:Arial; font-size:12px">%%GLOBAL_ShippingAddress%%</div>
+					<!--
+					<div style="%%GLOBAL_HideShippingEmail%%">%%LNG_Email%%: %%GLOBAL_ShippingEmail%%</div>
+					-->
+				</td>
+				<td id="Right" width="50%" valign="top">
+					<h3 style="font-family:Arial; font-size:18px">%%LNG_BillingAddress%%</h3>
+					<div style="font-family:Arial; font-size:12px">%%GLOBAL_BillingAddress%%</div>
+					<!--
+					<div style="%%GLOBAL_HideBillingEmail%%">%%LNG_Email%%: %%GLOBAL_BillingEmail%%</div>
+					-->
+				</td>
+			</tr>
+		</table>
+		<br /><br />
+		%%GLOBAL_PendingPaymentDetails%%
+
+		%%GLOBAL_OrderCommentBlock%%
+
+		<h3 style="font-size:18px">%%LNG_YourOrderContainsTheFollowingItems%%</h3>
+		%%GLOBAL_CartItemColumns%%
+
+		%%SNIPPET_CartItems%%
+		%%SNIPPET_TotalRows%%
+		%%SNIPPET_PaymentMethod%%
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/template/Emails/low_inventory_email.html b/template/Emails/low_inventory_email.html
new file mode 100644
index 0000000..28e7e7d
--- /dev/null
+++ b/template/Emails/low_inventory_email.html
@@ -0,0 +1,20 @@
+<html><body style="font-family: Arial; font-size: 12px;">
+	<div style="padding: 0 20px 20px 20px;">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_LowInventoryWarning%%</h2>
+
+		<p>%%GLOBAL_LowInventoryWarningIntro%%</p>
+
+		<p>
+			%%GLOBAL_LowInventoryWarningProduct%%<br />
+			%%GLOBAL_LowInventoryWarningCurrentStock%%
+		</p>
+
+		<p><a href="%%GLOBAL_ShopPath%%/admin/index.php?ToDo=editProduct&amp;productId=%%GLOBAL_ProductId%%">%%LNG_LowInventoryWarningAdjust%%</a></p>
+
+		<p><a href="%%GLOBAL_ShopPath%%/admin/index.php?ToDo=viewProducts&amp;inventoryLow=1">%%LNG_LowInventoryWarningAll%%</a></p>
+
+		<p>%%GLOBAL_LowInventoryWarningNotice%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/order_status_downloads_email.html b/template/Emails/order_status_downloads_email.html
new file mode 100644
index 0000000..1b9ff72
--- /dev/null
+++ b/template/Emails/order_status_downloads_email.html
@@ -0,0 +1,41 @@
+<html><body style="font-family: Arial; font-size: 12px;">
+	<div style="padding: 0 20px 20px 20px;">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_OrderStatusChanged%%</h2>
+
+		<p>%%GLOBAL_OrderStatusChangedHi%%</p>
+
+		<p>%%LNG_OrderStatusChangedIntro%%</p>
+
+		<p>%%GLOBAL_OrderNumberStatusChangedTo%%</p>
+
+		<h3 style="font-size:13px; color:#cc6600;">%%LNG_OrderDetails%%</h3>
+		<table width="100%">
+			<tr>
+				<td style="font-family: Arial; font-size: 13px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_OrderStatusChangedOrderTotal%%:</td>
+				<td style="font-family: Arial; font-size: 13px;">%%GLOBAL_OrderTotal%%</td>
+			</tr>
+            %%GLOBAL_RefundedAmountRow%%
+			<tr>
+				<td style="font-family: Arial; font-size: 13px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_OrderStatusChangedDatePlaced%%:</td>
+				<td style="font-family: Arial; font-size: 13px;">%%GLOBAL_DatePlaced%%</td>
+			</tr>
+			<tr>
+				<td style="font-family: Arial; font-size: 13px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_OrderStatusChangedPaymentMethod%%:</td>
+				<td style="font-family: Arial; font-size: 13px;">%%GLOBAL_PaymentMethod%%</td>
+			</tr>
+		</table>
+
+		<h3 style="font-size:18px">%%LNG_YourOrderContainsTheFollowingDownloadableItems%%</h3>
+		<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="0">
+			<tr>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap>%%LNG_CartItems%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="100" align="center">%%LNG_Qty%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="100" align="right">&nbsp;</td>
+			</tr>
+		</table>
+		%%SNIPPET_CartItems%%
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body>
+</html>
diff --git a/template/Emails/order_status_email.html b/template/Emails/order_status_email.html
new file mode 100644
index 0000000..690d2b1
--- /dev/null
+++ b/template/Emails/order_status_email.html
@@ -0,0 +1,36 @@
+<html><body style="font-family: Arial; font-size: 12px;">
+	<div style="padding: 0 20px 20px 20px;">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_OrderStatusChanged%%</h2>
+
+		<p>%%GLOBAL_OrderStatusChangedHi%%</p>
+
+		<p>%%LNG_OrderStatusChangedIntro%%</p>
+
+		<p>%%GLOBAL_OrderNumberStatusChangedTo%%</p>
+
+		<h3 style="font-size:13px; color:#cc6600;">%%LNG_OrderDetails%%</h3>
+		<table width="100%">
+			<tr>
+				<td style="font-family: Arial; font-size: 13px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_OrderStatusChangedOrderTotal%%:</td>
+				<td style="font-family: Arial; font-size: 13px;">%%GLOBAL_OrderTotal%%</td>
+			</tr>
+            %%GLOBAL_RefundedAmountRow%%
+			<tr>
+				<td style="font-family: Arial; font-size: 13px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_OrderStatusChangedDatePlaced%%:</td>
+				<td style="font-family: Arial; font-size: 13px;">%%GLOBAL_DatePlaced%%</td>
+			</tr>
+			<tr>
+				<td style="font-family: Arial; font-size: 13px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_OrderStatusChangedPaymentMethod%%:</td>
+				<td style="font-family: Arial; font-size: 13px;">%%GLOBAL_PaymentMethod%%</td>
+			</tr>
+		</table>
+
+		<h3 style="font-size:13px; color:#cc6600;">%%LNG_ShipmentTrackingNumbersLinks%%</h3>
+		%%GLOBAL_TrackingLinkList%%
+
+		<p>%%GLOBAL_ViewOrderStatusLink%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/template/Emails/ordermessage_notification.html b/template/Emails/ordermessage_notification.html
new file mode 100644
index 0000000..48dccbc
--- /dev/null
+++ b/template/Emails/ordermessage_notification.html
@@ -0,0 +1,14 @@
+<html><body style="font-family: Arial; font-size: 12px;">
+	<div style="padding: 0 20px 20px 20px;">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_ReplyToYourOrderMessage%%</h2>
+
+		<p>%%LNG_ThisIsAnAutomatedMessage%%</p>
+
+		<p>%%GLOBAL_StoreName%% %%LNG_MessageEmailText1%%<br />
+		%%LNG_MessageEmailText2%%</p>
+
+		<p><a href="%%GLOBAL_ShopPathSSL%%/account.php?action=inbox">%%GLOBAL_ShopPathSSL%%/account.php?action=inbox</a></p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/out_of_stock_inventory_email.html b/template/Emails/out_of_stock_inventory_email.html
new file mode 100644
index 0000000..62283ca
--- /dev/null
+++ b/template/Emails/out_of_stock_inventory_email.html
@@ -0,0 +1,20 @@
+<html><body style="font-family: Arial; font-size: 12px;">
+	<div style="padding: 0 20px 20px 20px;">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%GLOBAL_OOSInventoryWarning%%</h2>
+
+		<p>%%GLOBAL_OOSInventoryWarningIntro%%</p>
+
+		<p>
+			%%GLOBAL_OOSInventoryWarningProduct%%<br />
+			%%GLOBAL_OOSInventoryWarningCurrentStock%%
+		</p>
+
+		<p><a href="%%GLOBAL_ShopPath%%/admin/index.php?ToDo=editProduct&amp;productId=%%GLOBAL_ProductId%%">%%LNG_OOSInventoryWarningAdjust%%</a></p>
+
+		<p><a href="%%GLOBAL_ShopPath%%/admin/index.php?ToDo=viewProducts&amp;outOfStock=1">%%LNG_OOSInventoryWarningAll%%</a></p>
+
+		<p>%%GLOBAL_OOSInventoryWarningNotice%%</p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/page_contact_email.html b/template/Emails/page_contact_email.html
new file mode 100644
index 0000000..9004a6c
--- /dev/null
+++ b/template/Emails/page_contact_email.html
@@ -0,0 +1,18 @@
+<html><body style="font-family: Arial; font-size: 12px;">
+	<div style="padding: 0 20px 20px 20px;">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_ContactPageFormSubmitted%%</h2>
+
+		<p>%%LNG_ContactFormEmail1%%</p>
+
+		<h3 style="font-size:13px; color:#cc6600;">%%LNG_ContactFormDetails%%:</h3>
+
+		<table width="100%" cellpadding="4" cellspacing="0" border="0">
+			%%GLOBAL_FormFieldList%%
+			<tr>
+				<td style="font-family: Arial; font-size: 12px;" colspan="2">%%GLOBAL_Question%%</td>
+			</tr>
+		</table>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/product_review_email.html b/template/Emails/product_review_email.html
new file mode 100644
index 0000000..220a4be
--- /dev/null
+++ b/template/Emails/product_review_email.html
@@ -0,0 +1,17 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_ProductReviewEmailHeading%%</h2>
+
+		<p>%%LNG_ProductReviewEmailSubheading%%</p>
+
+		<p>%%LNG_ProductReviewEmailInstructions%%</p>
+
+		<p><ul>%%SNIPPET_ProductReviewItems%%</ul></p>
+
+		<p>%%LNG_ProductReviewEmailThanks%%</p>
+
+		%%GLOBAL_EmailFooter%%
+		<br/>
+		<p><a href="%%GLOBAL_ProductReviewEmailUnsubscribeLink%%">%%LNG_ProductReviewEmailUnsubscribe%%</a>%%LNG_ProductReviewEmailUnsubscribeSuffix%%</p>
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/return_confirmation_email.html b/template/Emails/return_confirmation_email.html
new file mode 100644
index 0000000..142913d
--- /dev/null
+++ b/template/Emails/return_confirmation_email.html
@@ -0,0 +1,38 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_NotificationConfirmationForReturn%% #%%GLOBAL_OrderId%%</h2>
+		<div style="width:100%; padding:10px; background-color:#FFF4EA">
+			<img src="%%GLOBAL_IMG_PATH%%/InfoMessage.gif" />&nbsp;
+			%%LNG_NotificationAReturnSummaryIsShownBelow%% <a href="%%GLOBAL_ShopPath%%/account.php?view=returns">%%LNG_ClickHere%%</a>.
+		</div>
+
+		<br />
+
+		<table width="100%" cellspacing="0" cellpadding="4">
+			<tr>
+				<td style="font-family:Arial; font-size: 12px; font-weight: bold;" nowrap="nowrap" width="25%">%%LNG_ReturnReason%%:</td>
+				<td style="font-family:Arial; font-size: 12px;">%%GLOBAL_ReturnReason%%</td>
+			</tr>
+			<tr style="display: %%GLOBAL_HideReturnAction%%">
+				<td style="font-family:Arial; font-size: 12px; font-weight: bold;" nowrap="nowrap" width="25%">%%LNG_ReturnAction%%:</td>
+				<td style="font-family:Arial; font-size: 12px;">%%GLOBAL_ReturnAction%%</td>
+			</tr>
+			<tr>
+				<td style="font-family:Arial; font-size: 12px; font-weight: bold;" nowrap="nowrap" valign="top">%%LNG_YourComments%%:</td>
+				<td style="font-family:Arial; font-size: 12px;">%%GLOBAL_ReturnComments%%</td>
+			</tr>
+		</table>
+
+		<h3 style="font-size:13px; color:#cc6600;">%%LNG_NotificationYourReturnContainsTheFollowingItems%%</h3>
+		<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="0">
+			<tr>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap>%%LNG_ReturnItems%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="120">%%LNG_Qty%%</td>
+			</tr>
+		</table>
+		%%SNIPPET_ReturnItems%%
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/template/Emails/return_notification_email.html b/template/Emails/return_notification_email.html
new file mode 100644
index 0000000..122d919
--- /dev/null
+++ b/template/Emails/return_notification_email.html
@@ -0,0 +1,40 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_NotificationNewReturnRequest%% - #%%GLOBAL_OrderId%%</h2>
+		<div style="width:100%; padding:10px; background-color:#FFF4EA">
+			<img src="%%GLOBAL_IMG_PATH%%/InfoMessage.gif" />&nbsp;
+			%%LNG_NotificationReturnRequestSubmitted%% %%GLOBAL_StoreName%%. <a href='%%GLOBAL_ShopPath%%/admin/index.php?ToDo=viewReturns&amp;returnid=%%GLOBAL_ReturnId%%'>%%LNG_NotificationClickHereViewReturn%%%%GLOBAL_ReturnId%%</a>.
+		</div>
+		<br />
+		<table width="100%" cellspacing="0" cellpadding="4">
+			<tr>
+				<td style="font-family:Arial; font-size: 12px; font-weight: bold;" nowrap="nowrap" valign="top" width="25%">%%LNG_NotificationCustomerDetails%%:</td>
+				<td style="font-family:Arial; font-size: 12px;">%%GLOBAL_CustomerName%% (<a href="mailto:%%GLOBAL_CustomerEmail%%">%%GLOBAL_CustomerEmail%%</a>)</td>
+			</tr>
+			<tr>
+				<td style="font-family:Arial; font-size: 12px; font-weight: bold;" nowrap="nowrap" width="25%">%%LNG_ReturnReason%%:</td>
+				<td style="font-family:Arial; font-size: 12px;">%%GLOBAL_ReturnReason%%</td>
+			</tr>
+			<tr style="display: %%GLOBAL_HideReturnAction%%">
+				<td style="font-family:Arial; font-size: 12px; font-weight: bold;" nowrap="nowrap" width="25%">%%LNG_ReturnAction%%:</td>
+				<td style="font-family:Arial; font-size: 12px;">%%GLOBAL_ReturnAction%%</td>
+			</tr>
+			<tr>
+				<td style="font-family:Arial; font-size: 12px; font-weight: bold;" nowrap="nowrap" width="25%">%%LNG_YourComments%%:</td>
+				<td style="font-family:Arial; font-size: 12px;">%%GLOBAL_ReturnComments%%</td>
+			</tr>
+		</table>
+
+		<h3 style="font-size:13px; color:#cc6600;">%%LNG_NotificationTheReturnContainsTheFollowingItems%%</h3>
+		<table width="100%" id="CheckoutCartGrid" cellspacing="0" cellpadding="0">
+			<tr>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap>%%LNG_ReturnItems%%</td>
+				<td style="font-family:Arial; font-size:12px; background-color:#020B6F; color:white; padding:5px; font-weight:bold" nowrap="nowrap" width="120">%%LNG_Qty%%</td>
+			</tr>
+			%%SNIPPET_ReturnItems%%
+		</table>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/template/Emails/return_statuschange_email.html b/template/Emails/return_statuschange_email.html
new file mode 100644
index 0000000..104042a
--- /dev/null
+++ b/template/Emails/return_statuschange_email.html
@@ -0,0 +1,19 @@
+<html><body style="font-family:Arial; font-size:12px">
+	<div style="padding:0px 20px 20px 20px">
+		<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_StatusOfReturnChanged%%</h2>
+
+		<p>%%LNG_Hi%% %%GLOBAL_CustomerFirstName%%,</p>
+
+		<p>%%LNG_RecentlySubmittedReturnRequest%%</p>
+
+		<p>%%GLOBAL_ProductQuantity%% x %%GLOBAL_ProductName%%</p>
+
+		<p>%%LNG_ReturnStatusChangedTo%% <strong>%%GLOBAL_ReturnStatus%%</strong>. %%GLOBAL_ReturnReceivedCredit%%</p>
+
+		%%GLOBAL_ReturnInstructions%%
+
+		<p><a href='%%GLOBAL_ShopPath%%/account.php?action=view_returns'>%%LNG_ClickToViewReturnStatus%%</a></p>
+
+		%%GLOBAL_EmailFooter%%
+	</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/store_owner_abandoned_cart_converted_email.html b/template/Emails/store_owner_abandoned_cart_converted_email.html
new file mode 100644
index 0000000..45ab9ce
--- /dev/null
+++ b/template/Emails/store_owner_abandoned_cart_converted_email.html
@@ -0,0 +1,15 @@
+<html>
+<body style="font-family:Arial; font-size:12px">
+<div style="padding:0px 20px 20px 20px">
+	<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_AC_AbandonedCartConvertedHeading%%</h2>
+
+	<h2>%%LNG_AC_RecoveredEmailSubHeading%%</h2>
+	<p>%%LNG_AC_RecoveredEmailIntroText%%</p>
+
+	<p>%%SNIPPET_AC_CartDetails%%</p>
+
+	<p>%%GLOBAL_AC_EmailFooterNote%%</p>
+
+	%%GLOBAL_EmailFooter%%
+</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Emails/store_owner_abandoned_cart_email.html b/template/Emails/store_owner_abandoned_cart_email.html
new file mode 100644
index 0000000..b9ba552
--- /dev/null
+++ b/template/Emails/store_owner_abandoned_cart_email.html
@@ -0,0 +1,14 @@
+<html>
+<body style="font-family:Arial; font-size:12px">
+<div style="padding:0px 20px 20px 20px">
+	<h2 style="font-size:22px; height:30px; color:#cc6600; border-bottom:dashed 1px gray">%%LNG_AC_AbandonedCartNoticeHeading%%</h2>
+
+	<p>%%GLOBAL_AC_EmailIntroText%%</p>
+
+	<p>%%SNIPPET_AC_CartDetails%%</p>
+	
+	<p>%%GLOBAL_AC_EmailFooterNote%%</p>
+
+	%%GLOBAL_EmailFooter%%
+</div>
+</body></html>
\ No newline at end of file
diff --git a/template/Panels/AccountBreadcrumb.html b/template/Panels/AccountBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountDownloadItems.html b/template/Panels/AccountDownloadItems.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountDownloadItemsBreadcrumb.html b/template/Panels/AccountDownloadItemsBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountInbox.html b/template/Panels/AccountInbox.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountInboxJavaScript.html b/template/Panels/AccountInboxJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountNewReturnBreadcrumb.html b/template/Panels/AccountNewReturnBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountNewReturnInfo.html b/template/Panels/AccountNewReturnInfo.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountNewReturnProducts.html b/template/Panels/AccountNewReturnProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountOrder.html b/template/Panels/AccountOrder.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountOrderJavaScript.html b/template/Panels/AccountOrderJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountOrderLinks.html b/template/Panels/AccountOrderLinks.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountOrderShipments.html b/template/Panels/AccountOrderShipments.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountOrderStatus.html b/template/Panels/AccountOrderStatus.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountOrders.html b/template/Panels/AccountOrders.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountRecentItems.html b/template/Panels/AccountRecentItems.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AccountReturns.html b/template/Panels/AccountReturns.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AddShippingAddressJavaScript.html b/template/Panels/AddShippingAddressJavaScript.html
old mode 100755
new mode 100644
index dc62b75..1c17639
--- a/template/Panels/AddShippingAddressJavaScript.html
+++ b/template/Panels/AddShippingAddressJavaScript.html
@@ -1,4 +1,4 @@
-<script src="%%GLOBAL_ShopPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
 <script>
 	/* Make sure all new shipping address details are filled in */
 	function check_shipping_address_form() {
@@ -24,4 +24,4 @@
 	}
 
 	%%GLOBAL_FormFieldRequiredJS%%
-</script>
\ No newline at end of file
+</script>
diff --git a/template/Panels/AddressBookBreadcrumb.html b/template/Panels/AddressBookBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/AuthorizeNetPaymentJavaScript.html b/template/Panels/AuthorizeNetPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/BlogRecentPosts.html b/template/Panels/BlogRecentPosts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/BrandBreadcrumb.html b/template/Panels/BrandBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/BrandContent.html b/template/Panels/BrandContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/BrandProductListing.html b/template/Panels/BrandProductListing.html
old mode 100755
new mode 100644
index 4697cb7..17664ff
--- a/template/Panels/BrandProductListing.html
+++ b/template/Panels/BrandProductListing.html
@@ -1,6 +1,6 @@
 %%GLOBAL_BrandsMessage%%
 <div class="product-grid" style="display: %%GLOBAL_HideBrandProductListing%%">
-	<ul>
+	<ul class="ProductList">
 		%%GLOBAL_BrandProductListing%%
 	</ul>
 </div>
diff --git a/template/Panels/Breadcrumb.html b/template/Panels/Breadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CCManualPaymentJavaScript.html b/template/Panels/CCManualPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CartBreadcrumb.html b/template/Panels/CartBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CartContent.html b/template/Panels/CartContent.html
old mode 100755
new mode 100644
index f33d665..994736d
--- a/template/Panels/CartContent.html
+++ b/template/Panels/CartContent.html
@@ -89,7 +89,7 @@
 									</div>
 									
 									<div class="row">
-										<div class="four columns mobile-one">
+										<div class="four columns mobile-two">
 											<a class="secondary small button right" href="#" onclick="return Cart.ToggleShippingEstimation();">%%LNG_Cancel%%</a>
 										</div>
 										<div class="eight columns mobile-two EstimateShippingButtons">
diff --git a/template/Panels/CartCouponCodeBox.html b/template/Panels/CartCouponCodeBox.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CartGiftCertificateCodeBox.html b/template/Panels/CartGiftCertificateCodeBox.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CartHeader.html b/template/Panels/CartHeader.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CartJavaScript.html b/template/Panels/CartJavaScript.html
old mode 100755
new mode 100644
index 633d87d..abe8296
--- a/template/Panels/CartJavaScript.html
+++ b/template/Panels/CartJavaScript.html
@@ -16,5 +16,3 @@
 	lang.InvalidFileTypeJS = "%%LNG_InvalidFileTypeJS%%";
 	lang.DeleteProductFieldFileConfirmation = "%%LNG_DeleteProductFieldFileConfirmation%%";
 </script>
-<script src="%%GLOBAL_AppPath%%/template/js/plugin/imodal.js"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/bc/cart.js"></script>
diff --git a/template/Panels/CartStatusMessage.html b/template/Panels/CartStatusMessage.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CategoryBreadcrumb.html b/template/Panels/CategoryBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CategoryContent.html b/template/Panels/CategoryContent.html
old mode 100755
new mode 100644
index 19d18b5..90e2308
--- a/template/Panels/CategoryContent.html
+++ b/template/Panels/CategoryContent.html
@@ -4,7 +4,7 @@
 	%%GLOBAL_CompareButtonTop%%
 	
 	<div class="product-grid %%GLOBAL_DisplayMode%%">
-		<ul>
+		<ul class="ProductList">
 			%%GLOBAL_CategoryProductListing%%
 		</ul>
 	</div>
diff --git a/template/Panels/CategoryHeading.html b/template/Panels/CategoryHeading.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CategoryPagingBottom.html b/template/Panels/CategoryPagingBottom.html
old mode 100755
new mode 100644
index 21ccc49..01cb774
--- a/template/Panels/CategoryPagingBottom.html
+++ b/template/Panels/CategoryPagingBottom.html
@@ -1,3 +1,3 @@
-<div class="category-paging">
+<div class="category-paging" id="CategoryPagingBottom">
 	%%SNIPPET_CategoryPaging%%
 </div>
\ No newline at end of file
diff --git a/template/Panels/CategoryPagingTop.html b/template/Panels/CategoryPagingTop.html
old mode 100755
new mode 100644
index 21ccc49..ebfe3d9
--- a/template/Panels/CategoryPagingTop.html
+++ b/template/Panels/CategoryPagingTop.html
@@ -1,3 +1,3 @@
-<div class="category-paging">
+<div class="category-paging" id="CategoryPagingTop">
 	%%SNIPPET_CategoryPaging%%
 </div>
\ No newline at end of file
diff --git a/template/Panels/CategoryProductListing.html b/template/Panels/CategoryProductListing.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CheckGiftCertificateBalance.html b/template/Panels/CheckGiftCertificateBalance.html
old mode 100755
new mode 100644
index d82e945..dffd199
--- a/template/Panels/CheckGiftCertificateBalance.html
+++ b/template/Panels/CheckGiftCertificateBalance.html
@@ -7,7 +7,7 @@
 	%%LNG_GiftCertificateBalanceIntro%%
 </p>
 
-<img src="%%GLOBAL_IMG_PATH%%/ExampleGiftCertificate.gif" alt="" style="margin-bottom: 15px; display: %%GLOBAL_HideExampleImage%%">
+<img src="%%ASSET_images/ExampleGiftCertificate.gif%%" alt="" style="margin-bottom: 15px; display: %%GLOBAL_HideExampleImage%%">
 
 <form method="post" action="%%GLOBAL_ShopPath%%/giftcertificates.php?action=balance" onsubmit="return CheckGiftCertificateBalanceForm()" id="frmGiftCertificate">
 	<div class="row">
diff --git a/template/Panels/CheckoutBillingAddressFields.html b/template/Panels/CheckoutBillingAddressFields.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CheckoutBreadcrumb.html b/template/Panels/CheckoutBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CheckoutNewAddressForm.html b/template/Panels/CheckoutNewAddressForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ChooseBillingAddress.html b/template/Panels/ChooseBillingAddress.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ChooseCheckoutProviderJavaScript.html b/template/Panels/ChooseCheckoutProviderJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ChooseShippingAddress.html b/template/Panels/ChooseShippingAddress.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ChooseShippingAddressJavaScript.html b/template/Panels/ChooseShippingAddressJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ChooseShippingProvider.html b/template/Panels/ChooseShippingProvider.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CompareBreadcrumb.html b/template/Panels/CompareBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CompareContent.html b/template/Panels/CompareContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ConfirmOrder.html b/template/Panels/ConfirmOrder.html
old mode 100755
new mode 100644
index 51e56fa..6fff5c6
--- a/template/Panels/ConfirmOrder.html
+++ b/template/Panels/ConfirmOrder.html
@@ -4,8 +4,9 @@
 	<form method="post" action="%%GLOBAL_ShopPath%%/checkout.php" onsubmit="return confirm_payment_provider()">
 		<input type="hidden" name="action" value="pay_for_order">
 
-		<input type="submit" class="right button" id="top_payment_button" value="%%LNG_ProceedToPayment%%" style="display:%%GLOBAL_HideTopPaymentButton%%;">
-			
+		<div class="text-right padded-bottom">
+			<input type="submit" class="button" id="top_payment_button" value="%%LNG_ProceedToPayment%%" style="display:%%GLOBAL_HideTopPaymentButton%%;">
+		</div>
 		<div class="alert-box %%GLOBAL_HideCheckoutError%%" style="display: %%GLOBAL_HideCheckoutError%%">
 			<div>%%GLOBAL_CheckoutErrorMsg%%</div>
 			<a href="" class="close">&times;</a>
@@ -160,6 +161,5 @@
 			<input class="right button" id="bottom_payment_button" style="display:%%GLOBAL_HideButtomPaymentButton%%" type="submit" value="%%LNG_ProceedToPayment%%">
 		</p>
 	</form>
-
 </div>
 
diff --git a/template/Panels/ContactFormJavaScript.html b/template/Panels/ContactFormJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CreateAccountBreadcrumb.html b/template/Panels/CreateAccountBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CreateAccountForm.html b/template/Panels/CreateAccountForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/CreateAccountJavaScript.html b/template/Panels/CreateAccountJavaScript.html
old mode 100755
new mode 100644
index e2543e6..2565ec4
--- a/template/Panels/CreateAccountJavaScript.html
+++ b/template/Panels/CreateAccountJavaScript.html
@@ -1,5 +1,5 @@
-<script src="%%GLOBAL_ShopPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
-<script src="%%GLOBAL_ShopPath%%/javascript/validate.js?%%GLOBAL_JSCacheToken%%"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/validate.js?%%GLOBAL_JSCacheToken%%"></script>
 <script>
 
 	/* Make sure all new account details are filled in */
@@ -55,4 +55,4 @@
 	}
 
 	%%GLOBAL_FormFieldRequiredJS%%
-</script>
\ No newline at end of file
+</script>
diff --git a/template/Panels/EWayPaymentJavaScript.html b/template/Panels/EWayPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/EditAccountBreadcrumb.html b/template/Panels/EditAccountBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/EditAccountForm.html b/template/Panels/EditAccountForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/EditAccountJavaScript.html b/template/Panels/EditAccountJavaScript.html
old mode 100755
new mode 100644
index ae66b8a..5be9a7a
--- a/template/Panels/EditAccountJavaScript.html
+++ b/template/Panels/EditAccountJavaScript.html
@@ -1,4 +1,4 @@
-<script type="text/javascript" src="%%GLOBAL_ShopPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
+<script type="text/javascript" src="%%GLOBAL_CdnAppPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
 <script type="text/javascript">
 //<![CDATA[
 	/* Make sure all new account details are filled in */
@@ -66,4 +66,4 @@
 
 	%%GLOBAL_FormFieldRequiredJS%%
 //]]>
-</script>
\ No newline at end of file
+</script>
diff --git a/template/Panels/FacetedSearch.html b/template/Panels/FacetedSearch.html
new file mode 100755
index 0000000..28c145b
--- /dev/null
+++ b/template/Panels/FacetedSearch.html
@@ -0,0 +1,75 @@
+<div class="js-faceted-showing-container"></div>
+
+<div class="js-faceted-search-container"></div>
+
+<script id="js-template-facet-showing" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchTemplateShowing%%
+</script>
+
+<script id="js-template-facet-category" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchTemplateCategory%%
+</script>
+
+<script id="js-template-facet-multi" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchTemplateMultichoice%%
+</script>
+
+<script id="js-template-facet-range" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchTemplateRange%%
+</script>
+
+<script id="js-template-facet-rating" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchTemplateRating%%
+</script>
+
+<script id="js-template-facet-single" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchTemplateSingle%%
+</script>
+
+<script id="js-template-product-list" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchProductList%%
+</script>
+
+<script id="js-template-product-grid" type="text/x-handlebars-template">
+    %%Panel.FacetedSearchProductGrid%%
+</script>
+
+<script id="js-template-pagination" type="text/x-handlebars-template">
+    %%Panel.Pagination%%
+</script>
+
+<script>
+    var lang = lang || {};
+    lang.compare = '%%LNG_Compare%%';
+    lang.ProductChooseOptionLink = '%%LNG_ProductChooseOptionLink%%';
+    lang.ProductPreOrderCartLink = '%%LNG_ProductPreOrderCartLink%%';
+    lang.ProductAddToCartLink = '%%LNG_ProductAddToCartLink%%';
+    lang.CatalogPriceIncTaxLabel = '%%LNG_CatalogPriceIncTaxLabel%%';
+    lang.CatalogPriceExTaxLabel = '%%LNG_CatalogPriceExTaxLabel%%';
+
+    // assignment of a value via `return` prevents JS to break in case of empty %%GLOBAL%% variable
+    var facetedSearchOptions = function(){return %%GLOBAL_FacetedSearchOptionsJSON%%}() || {};
+    facetedSearchOptions.reloadCallback = function () {
+        if (typeof($('.QuickView').quickview) === "function") {
+            $('.QuickView').quickview({
+                buttonText: "%%GLOBAL_QuickViewButtonText%%",
+                buttonColor: "%%GLOBAL_QuickViewButtonColor%%",
+                gradientColor: "%%GLOBAL_QuickViewGradientColor%%",
+                textColor: "%%GLOBAL_QuickViewTextColor%%"
+            });
+        }
+
+        if (typeof(setProductListHeights) === 'function') {
+            setProductListHeights();
+        }
+    };
+
+    (function() {
+        //try and make sure require and faceted-search loads after everything on a theme page.
+        var fs = document.createElement('script');
+        fs.async = true;
+        fs.setAttribute('data-main', '%%GLOBAL_FacetedSearchScriptPath%%');
+        fs.src = '%%GLOBAL_FacetedSearchScriptPath%%';
+        var s = document.getElementsByTagName('body')[0]; s.appendChild(fs);
+    })();
+</script>
diff --git a/template/Panels/FacetedSearchProductGrid.html b/template/Panels/FacetedSearchProductGrid.html
new file mode 100755
index 0000000..6b118e4
--- /dev/null
+++ b/template/Panels/FacetedSearchProductGrid.html
@@ -0,0 +1,35 @@
+<ul class="ProductList">
+    {{#variants}}
+        <li data-product="{{ product.id }}">
+            
+            <div class="ProductImage"><a href="{{ product.url }}"><img src="{{ product.default_image.thumbnail_url }}" alt="{{ product.name }}" /></a></div>
+            
+            <div class="ProductDetails">
+				<span class="ProductName"><a href="{{ product.url }}" class="pname">{{ product.name }}</a></span>
+				<span class="ProductPrice p-price">{{{ formatProductCatalogPrice . ../storeConfig.taxDefaultTaxDisplayCatalog }}}</span>
+				{{#if product.add_text}}
+					<span class="ProductActionAdd">
+						<a href="{{ product.add_url }}" class="small button">{{ product.add_text }}</a>
+					</span>
+				{{/if}}
+				{{#ifStoreConfig 'ShowProductRating'}}
+					<span class="ProductRating ProductRating{{ product.rating }}">
+						<a class="show-reviews rating-{{ product.rating }}" href="{{ product.url }}#reviews">
+							<i class="icon-rating-{{ product.rating }}"></i>
+						</a>
+					</span>
+				{{/ifStoreConfig}}
+				{{#ifStoreConfig 'EnableProductComparisons'}}
+					<div class="ProductCompareButton">
+						<label for="compare_{{ product.id }}">
+							<input type="checkbox" name="compare_product_ids" id="compare_{{ product.id }}" value="{{ product.id }}" onclick="product_comparison_box_changed(this.checked)">
+							{{ getLang 'compare' }}
+						</label>
+					</div>
+				{{/ifStoreConfig}}
+			</div>
+			
+			<a href="{{ product.url }}" class="overlay-link"></a>
+        </li>
+    {{/variants}}
+</ul>
\ No newline at end of file
diff --git a/template/Panels/FacetedSearchProductList.html b/template/Panels/FacetedSearchProductList.html
new file mode 100755
index 0000000..5845789
--- /dev/null
+++ b/template/Panels/FacetedSearchProductList.html
@@ -0,0 +1,37 @@
+<ul class="ProductList List">
+    {{#variants}}
+        <li class="ListView" data-product="{{ product.id }}">
+            <div class="ProductImage"><a href="{{ product.url }}"><img src="{{ product.default_image.thumbnail_url }}" alt="{{ product.name }}" /></a></div>
+	
+			<div class="ProductDetails">
+				<span class="ProductName p-name"><a href="{{ product.url }}">{{ product.name }}</a></span>
+				<span class="ProductPrice p-price">{{{ formatProductCatalogPrice . }}}</span>
+				{{#if product.add_text }}
+					<span class="ProductActionAdd">
+						<a href="{{ product.add_url }}" class="small button">{{ product.add_text }}</a>
+					</span>
+				{{/if}}
+				{{#if product.rating}}
+					<span class="ProductRating ProductRating{{ product.rating }}">
+						<a class="show-reviews rating-{{ product.rating }}" href="{{ product.url }}#reviews">
+							<span class="has-tip tip-right" title="Read Reviews">
+								<i class="icon-rating-{{ product.rating }}"></i>
+							</span>
+						</a>
+					</span>
+				{{/if}}
+				<div class="ProductDescription">{{{  product.description }}</div>
+				{{#ifStoreConfig 'EnableProductComparisons'}}
+					<div class="ProductCompareButton">
+						<label for="compare_{{ product.id }}">
+							<input type="checkbox" name="compare_product_ids" id="compare_{{ product.id }}" value="{{ product.id }}" onclick="product_comparison_box_changed(this.checked)">
+							{{ getLang 'compare' }}
+						</label>
+					</div>
+				{{/ifStoreConfig}}
+			</div>
+			
+			<a href="{{ product.url }}" class="overlay-link"></a>
+        </li>
+    {{/variants}}
+</ul>
\ No newline at end of file
diff --git a/template/Panels/FacetedSearchTemplateCategory.html b/template/Panels/FacetedSearchTemplateCategory.html
new file mode 100755
index 0000000..fb2f85b
--- /dev/null
+++ b/template/Panels/FacetedSearchTemplateCategory.html
@@ -0,0 +1,34 @@
+<div class="facet-container facet-container-category {{ facetState }} {{ facetLevels }}">
+    <div class="facet-header js-facet-accordion-action">
+        <h6 class="facet-header-title">{{ title }}</h6>
+        {{#if showClearButton}}
+            <a herf="#" class="js-facet-clear">Clear</a>
+        {{/if}}
+    </div>
+    <div class="facet-body">
+        <ul class="facet-options-list">
+            {{#options}}
+                <li class="facet-option js-facet-option {{ attributes.level }} {{#if attributes.selected }} selected {{/if}}">
+                    <a data-id="{{ attributes.id }}"
+                       href="#"
+                       class="facet-category-option js-facet-category-option {{#if attributes.has_sub_categories }} facet-category-option-has-children {{/if}}" >
+                        {{ attributes.title }}
+
+                        {{#if ../showCount}}
+                            {{#if attributes.count}}
+                                <span class="facet-option-product-count">
+                                    ({{ attributes.count }})
+                                </span>
+                            {{/if}}
+                        {{/if}}
+                    </a>
+                </li>
+            {{/options}}
+        </ul>
+        {{#if showMoreButton}}
+            <div class="js-facet-more-options">
+                <button type="button" class="btn btn-facet-more-options {{ showMoreState }}"></button>
+            </div>
+        {{/if}}
+    </div>
+</div>
diff --git a/template/Panels/FacetedSearchTemplateMultichoice.html b/template/Panels/FacetedSearchTemplateMultichoice.html
new file mode 100755
index 0000000..9a1958c
--- /dev/null
+++ b/template/Panels/FacetedSearchTemplateMultichoice.html
@@ -0,0 +1,36 @@
+<div class="facet-container facet-container-multi {{ facetState }}">
+    <div class="facet-header js-facet-accordion-action">
+        <h6 class="facet-header-title">{{ title }}</h6>
+        {{#if showClearButton}}
+            <a herf="#" class="js-facet-clear">Clear</a>
+        {{/if}}
+    </div>
+    <div class="facet-body">
+        <ul class="facet-options-list">
+            {{#options}}
+                <li class="facet-option js-facet-option {{#if attributes.selected }} selected {{/if}}" >
+                    <label for="{{ attributes.id }}">
+                        <input
+                            class="js-facet-option-checkbox"
+                            type="checkbox"
+                            name="{{ attributes.id }}"
+                            id="{{ attributes.id }}"
+                            {{#if attributes.selected }} checked="checked" {{/if}}
+                        />
+                        {{ attributes.title }}
+                        {{#if ../showCount}}
+                            <span class="facet-option-product-count">
+                                ({{ attributes.count }})
+                            </span>
+                        {{/if}}
+                    </label>
+                </li>
+            {{/options}}
+        </ul>
+        {{#if showMoreButton}}
+            <div class="js-facet-more-options">
+                <button type="button" class="btn btn-facet-more-options {{ showMoreState }}"></button>
+            </div>
+        {{/if}}
+    </div>
+</div>
diff --git a/template/Panels/FacetedSearchTemplateRange.html b/template/Panels/FacetedSearchTemplateRange.html
new file mode 100755
index 0000000..cc3aadd
--- /dev/null
+++ b/template/Panels/FacetedSearchTemplateRange.html
@@ -0,0 +1,42 @@
+<div class="facet-container facet-container-range js-accordion-container {{ facetState }}">
+    <div class="facet-header js-facet-accordion-action">
+        <h6 class="facet-header-title">{{ title }}</h6>
+    </div>
+    <div class="facet-body">
+        <form action="" id="facet-range-form" class="facet-form js-facet-range-from {{#if currentViewRange }} current {{/if}}">
+            <fieldset>
+                <input
+                    placeholder="Min."
+                    min="0"
+                    class="js-facet-range-input-from"
+                    required
+                    type="number"
+                    {{#if currentViewRange }} value="{{ currentViewRange.attributes.from }}" {{/if}}
+                />
+                -
+                <input
+                    placeholder="Max."
+                    min="0"
+                    class="js-facet-range-input-to"
+                    required
+                    type="number"
+                    {{#if currentViewRange }} value="{{ currentViewRange.attributes.to }}" {{/if}}
+                />
+                <button class="btn js-btn-facet-range-update" type="submit">Update</button>
+                <a href="#" class="btn js-btn-facet-range-clear">Clear</a>
+            </fieldset>
+        </form>
+        <ul class="facet-options-list">
+            {{#options}}
+                <li class="facet-option js-facet-option {{#if attributes.selected }} selected {{/if}}" >
+                    <a data-id="{{ attributes.id }}" href="#" class="js-facet-range-option">
+                        {{ attributes.title }}
+                        {{#if ../showCount}}
+                            <span class="facet-option-product-count">({{ attributes.count }})</span>
+                        {{/if}}
+                    </a>
+                </li>
+            {{/options}}
+        </ul>
+    </div>
+</div>
diff --git a/template/Panels/FacetedSearchTemplateRating.html b/template/Panels/FacetedSearchTemplateRating.html
new file mode 100755
index 0000000..6e3d17f
--- /dev/null
+++ b/template/Panels/FacetedSearchTemplateRating.html
@@ -0,0 +1,33 @@
+<div class="facet-container facet-container-rating js-accordion-container {{ facetState }}">
+    <div class="facet-header js-facet-accordion-action">
+        <h6 class="facet-header-title">{{ title }}</h6>
+        {{#if showClearButton}}
+            <a herf="#" class="js-facet-clear">Clear</a>
+        {{/if}}
+    </div>
+    <div class="facet-body">
+        <ul class="facet-options-list">
+            {{#options}}
+                <li class="facet-option js-facet-option {{#if attributes.selected }} selected {{/if}}" >
+                    <label for="{{ attributes.id }}">
+                        <input
+                            class="js-facet-option-checkbox"
+                            type="checkbox"
+                            name="{{ attributes.id }}"
+                            id="{{ attributes.id }}"
+                            value="{{ attributes.value }}"
+                            {{#if attributes.selected }} checked="checked" {{/if}}
+                        />
+                        <span class="facet-option-rating-stars"><i class="icon-rating-{{ attributes.value }}" title="{{ attributes.title }}"></i></span>
+                        &amp; up
+                        {{#if ../showCount}}
+                            <span class="facet-option-product-count">
+                                ({{ attributes.count }})
+                            </span>
+                        {{/if}}
+                    </label>
+                </li>
+            {{/options}}
+        </ul>
+    </div>
+</div>
diff --git a/template/Panels/FacetedSearchTemplateShowing.html b/template/Panels/FacetedSearchTemplateShowing.html
new file mode 100755
index 0000000..c0535b2
--- /dev/null
+++ b/template/Panels/FacetedSearchTemplateShowing.html
@@ -0,0 +1,19 @@
+<div class="facet-container">
+    <div class="facet-header">
+        <h6 class="facet-header-title">Refine by</h6>
+    </div>
+    <div class="facet-body">
+        <ul class="facet-labels-list">
+            {{#each facets}}
+                <li class="facet-label">
+                    <a data-id="{{ id }}" href="#" class="js-facet-label">{{ attributes.title }}</a>
+                </li>
+            {{else}}
+                <li>No filters applied</li>
+            {{/each}}
+        </ul>
+        {{#if facets}}
+            <a class="js-facet-clear-all" href="#">Clear all</a>
+        {{/if}}
+    </div>
+</div>
diff --git a/template/Panels/FacetedSearchTemplateSingle.html b/template/Panels/FacetedSearchTemplateSingle.html
new file mode 100755
index 0000000..02055bb
--- /dev/null
+++ b/template/Panels/FacetedSearchTemplateSingle.html
@@ -0,0 +1,27 @@
+<div class="facet-container facet-container-single {{ facetState }}">
+    <div class="facet-header js-facet-accordion-action">
+        <h6 class="facet-header-title">{{ title }}</h6>
+        {{#if showClearButton}}
+            <a herf="#" class="js-facet-clear">Clear</a>
+        {{/if}}
+    </div>
+    <div class="facet-body">
+        <ul class="facet-options-list">
+            {{#options}}
+                <li class="facet-option js-facet-option {{#if attributes.selected }} selected {{/if}}" >
+                    <a data-id="{{ id }}" href="#" class="js-facet-single-option">
+                        {{ attributes.title }}
+                        {{#if ../showCount}}
+                            <span class="facet-option-product-count">({{ attributes.count }})</span>
+                        {{/if}}
+                    </a>
+                </li>
+            {{/options}}
+        </ul>
+    </div>
+    {{#if showMoreButton}}
+        <div class="js-facet-more-options">
+            <button type="button" class="btn btn-facet-more-options {{ showMoreState }}"></button>
+        </div>
+    {{/if}}
+</div>
diff --git a/template/Panels/Footer.html b/template/Panels/Footer.html
old mode 100755
new mode 100644
index 3f66ea3..e31de66
--- a/template/Panels/Footer.html
+++ b/template/Panels/Footer.html
@@ -32,7 +32,7 @@
 		<div class="row">
 			<div class="twelve columns credit-links">
 				<p>
-					%%GLOBAL_AllPricesAreInCurrency%%
+					%%GLOBAL_AllPricesAreInCurrency%%.
 					&copy; %%GLOBAL_Year%% %%GLOBAL_StoreName%%
 					<br>
 					%%SNIPPET_SitemapLink%% <span class="divider">|</span>
@@ -54,28 +54,17 @@
 <script>
 	var config = {};
 	config.ShopPath = '%%GLOBAL_ShopPath%%';
-	config.AppPath = '%%GLOBAL_AppPath%%';
+	config.ShopPathNormal = '%%GLOBAL_ShopPathNormal%%';
+	config.ShopPathSSL = '%%GLOBAL_ShopPathSSL%%';	
+	config.AppPath = ''; // BIG-8939: Deprecated, do not use.
 	config.FastCart = %%GLOBAL_FastCart%%;
 </script>
 
 %%GLOBAL_QuickSearchJS%%
 
-<script src="%%GLOBAL_AppPath%%/template/js/foundation.min.js"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/bc/common.js"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/plugin/jquery.zoomie.js"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/plugin/jquery.touchwipe.min.js"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/plugin/jquery.fittext.js"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/template.js"></script>
-<script type="text/javascript" src="%%GLOBAL_AppPath%%/template/js/plugin/jquery.fancybox.pack.js"></script>
-<script type="text/javascript" src="%%GLOBAL_AppPath%%/template/js/plugin/jquery.fancybox-thumbs.js"></script>
-
-<!-- BC LIBRARIES FOR QUICKVIEW / OTHER AREAS -->
+<script src="%%ASSET_js/plugins.js%%"></script>
+<script src="%%ASSET_js/template.js%%"></script>
 <script src="%%GLOBAL_jQueryUIPath%%"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/plugin/jquery.validate.js?%%GLOBAL_JSCacheToken%%"></script>
-<script src="%%GLOBAL_AppPath%%/javascript/jquery/plugins/jquery.form.js?%%GLOBAL_JSCacheToken%%"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/bc/product.attributes.js?%%GLOBAL_JSCacheToken%%"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/bc/product.functions.js?%%GLOBAL_JSCacheToken%%"></script>
-<script src="%%GLOBAL_AppPath%%/template/js/bc/product.js?%%GLOBAL_JSCacheToken%%"></script>
 
 %%Panel._QuickView%%
 
diff --git a/template/Panels/FooterCategoryList.html b/template/Panels/FooterCategoryList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ForgotPasswordBreadcrumb.html b/template/Panels/ForgotPasswordBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ForgotPasswordForm.html b/template/Panels/ForgotPasswordForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ForgotPasswordJavaScript.html b/template/Panels/ForgotPasswordJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/GenericCreditCardPaymentJavaScript.html b/template/Panels/GenericCreditCardPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/GetNewPasswordBreadcrumb.html b/template/Panels/GetNewPasswordBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/GetNewPasswordForm.html b/template/Panels/GetNewPasswordForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/GiftCertificateBalanceRemaining.html b/template/Panels/GiftCertificateBalanceRemaining.html
old mode 100755
new mode 100644
diff --git a/template/Panels/GiftCertificateIntro.html b/template/Panels/GiftCertificateIntro.html
old mode 100755
new mode 100644
diff --git a/template/Panels/GiftCertificatesMenu.html b/template/Panels/GiftCertificatesMenu.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HTMLFoot.html b/template/Panels/HTMLFoot.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HTMLHead.html b/template/Panels/HTMLHead.html
old mode 100755
new mode 100644
index bcac568..9e136cf
--- a/template/Panels/HTMLHead.html
+++ b/template/Panels/HTMLHead.html
@@ -13,16 +13,16 @@
 	%%GLOBAL_AdditionalMetaTags%% %%Page.CanonicalLink%% %%Page.Robots%%
 	<link rel="shortcut icon" href="%%GLOBAL_Favicon%%">
 	
-	<link href="%%GLOBAL_AppPath%%/template/Styles/styles.css" media="all" type="text/css" rel="stylesheet">
-	<link href="%%GLOBAL_AppPath%%/template/Styles/theme.css" media="all" type="text/css" rel="stylesheet">
-	<link href="%%GLOBAL_AppPath%%/template/Styles/mods.css" media="all" type="text/css" rel="stylesheet">
+	%%GLOBAL_Stylesheets%%
+	
+	<link href='//fonts.googleapis.com/css?family=Roboto+Condensed:400,700' rel='stylesheet' type='text/css'>
 	
 	%%GLOBAL_HeadRSSLinks%%
 	
 	<!-- // HEADER JS: Only modernizr & jquery // All other JS in Panels/Footer.html // -->
-	<script src="%%GLOBAL_AppPath%%/template/js/plugin/modernizr.foundation.js"></script>
+	<script src="%%ASSET_js/modernizr.foundation.js%%"></script>
 	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
-	<script>window.jQuery || document.write('<script src="%%GLOBAL_AppPath%%/template/js/plugin/jquery-1.8.3.min.js"><\/script>')</script>
+	<script>window.jQuery || document.write('<script src="%%ASSET_js/jquery-1.8.3.min.js%%"><\/script>')</script>
 	
 	%%GLOBAL_TrackingCode%%
 </head>
diff --git a/template/Panels/Header.html b/template/Panels/Header.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HeaderSearch.html b/template/Panels/HeaderSearch.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HomeFeaturedProducts.html b/template/Panels/HomeFeaturedProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HomeNewProducts.html b/template/Panels/HomeNewProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HomeRecentBlogs.html b/template/Panels/HomeRecentBlogs.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HomeSaleProducts.html b/template/Panels/HomeSaleProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HomeSlideShow.html b/template/Panels/HomeSlideShow.html
old mode 100755
new mode 100644
diff --git a/template/Panels/HomeSlideShowJavaScript.html b/template/Panels/HomeSlideShowJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/IdealPaymentForm.html b/template/Panels/IdealPaymentForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/IdealPaymentJavaScript.html b/template/Panels/IdealPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/LoginBreadcrumb.html b/template/Panels/LoginBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/LoginForm.html b/template/Panels/LoginForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/LoginJavaScript.html b/template/Panels/LoginJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridBottom.html b/template/Panels/MainGridBottom.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridBottomAccount.html b/template/Panels/MainGridBottomAccount.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridBottomFacets.html b/template/Panels/MainGridBottomFacets.html
new file mode 100644
index 0000000..f6b5681
--- /dev/null
+++ b/template/Panels/MainGridBottomFacets.html
@@ -0,0 +1,2 @@
+	</div> <!-- /.eight.columns -->	
+</div> <!-- /.row -->
\ No newline at end of file
diff --git a/template/Panels/MainGridBottomSidebar.html b/template/Panels/MainGridBottomSidebar.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridBottomWide.html b/template/Panels/MainGridBottomWide.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridTop.html b/template/Panels/MainGridTop.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridTopAccount.html b/template/Panels/MainGridTopAccount.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridTopFacets.html b/template/Panels/MainGridTopFacets.html
new file mode 100644
index 0000000..74d592c
--- /dev/null
+++ b/template/Panels/MainGridTopFacets.html
@@ -0,0 +1,8 @@
+<div class="row mainsidebar_row">
+	<aside class="columns">
+		<button class="js-faceted-search-action btn button secondary">%%LNG_FilterBy%%</button>
+		<div class="panel Left js-faceted-search-column">
+			%%Panel.FacetedSearch%%
+		</div>
+	</aside>
+	<div class="columns">
\ No newline at end of file
diff --git a/template/Panels/MainGridTopSidebar.html b/template/Panels/MainGridTopSidebar.html
old mode 100755
new mode 100644
diff --git a/template/Panels/MainGridTopWide.html b/template/Panels/MainGridTopWide.html
old mode 100755
new mode 100644
diff --git a/template/Panels/NewsBreadcrumb.html b/template/Panels/NewsBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/NewsComments.html b/template/Panels/NewsComments.html
old mode 100755
new mode 100644
diff --git a/template/Panels/NewsContent.html b/template/Panels/NewsContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/NewsletterBreadcrumb.html b/template/Panels/NewsletterBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/NewsletterContent.html b/template/Panels/NewsletterContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/NewsletterJavaScript.html b/template/Panels/NewsletterJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/PageBreadcrumb.html b/template/Panels/PageBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/PageComments.html b/template/Panels/PageComments.html
old mode 100755
new mode 100644
diff --git a/template/Panels/PageContent.html b/template/Panels/PageContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/PagesMenu.html b/template/Panels/PagesMenu.html
old mode 100755
new mode 100644
diff --git a/template/Panels/Pagination.html b/template/Panels/Pagination.html
new file mode 100755
index 0000000..7d03966
--- /dev/null
+++ b/template/Panels/Pagination.html
@@ -0,0 +1,18 @@
+<div class="category-paging js-pagination {{ paginationClass }}">
+    <ul class="pagination js-paging-list {{ pagingListClass }}">
+	    {{#paginate pagination type="previous"}}
+	        {{^if disabled}}<li class="arrow"><a href="#" class="nav-prev js-paginate" data-page="{{n}}">&laquo; %%LNG_Previous%%</a></li>{{/if}}
+	    {{/paginate}}
+	    
+        {{#paginate pagination type="middle" limit="7"}}
+        {{#if active}}
+        <li class="ActivePage">{{n}}</li>
+        {{else}}
+        <li><a href="#" class="js-paginate" data-page="{{n}}">{{n}}</a></li>
+        {{/if}}
+        {{/paginate}}
+        {{#paginate pagination type="next"}}
+	        {{^if disabled}}<li class="arrow"><a href="#" class="nav-next js-paginate" data-page="{{n}}">%%LNG_Next%% &raquo;</a></li>{{/if}}
+	    {{/paginate}}
+    </ul>
+</div>
\ No newline at end of file
diff --git a/template/Panels/PayflowProPaymentJavaScript.html b/template/Panels/PayflowProPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/PostComments.html b/template/Panels/PostComments.html
old mode 100755
new mode 100644
diff --git a/template/Panels/PostContent.html b/template/Panels/PostContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductBreadcrumb.html b/template/Panels/ProductBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductByCategory.html b/template/Panels/ProductByCategory.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductContent.html b/template/Panels/ProductContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductDescription.html b/template/Panels/ProductDescription.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductDetails.html b/template/Panels/ProductDetails.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductImagePopup.html b/template/Panels/ProductImagePopup.html
old mode 100755
new mode 100644
index 9211ac3..b8236a3
--- a/template/Panels/ProductImagePopup.html
+++ b/template/Panels/ProductImagePopup.html
@@ -10,7 +10,7 @@
 
 <div class="ImageCarousel" style="display:none;margin:0 auto;">
 	<button id="ImageScrollPrev" class="prev">
-		<img width="20" src="%%GLOBAL_IMG_PATH%%/LeftArrow.png" alt="" />
+		<img width="20" src="%%ASSET_images/LeftArrow.png%%" alt="" />
 	</button>
 
 	<div class="ProductTinyImageList">
@@ -20,7 +20,7 @@
 	</div>
 
 	<button id="ImageScrollNext" class="next">
-		<img width="20" src="%%GLOBAL_IMG_PATH%%/RightArrow.png" alt="" />
+		<img width="20" src="%%ASSET_images/RightArrow.png%%" alt="" />
 	</button>
 
 
diff --git a/template/Panels/ProductJavaScript.html b/template/Panels/ProductJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductOtherDetails.html b/template/Panels/ProductOtherDetails.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductReviewList.html b/template/Panels/ProductReviewList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductReviews.html b/template/Panels/ProductReviews.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductTabs.html b/template/Panels/ProductTabs.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductTabsContent.html b/template/Panels/ProductTabsContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductTagCloud.html b/template/Panels/ProductTagCloud.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductVendorsOtherProducts.html b/template/Panels/ProductVendorsOtherProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductVideos.html b/template/Panels/ProductVideos.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ProductWarranty.html b/template/Panels/ProductWarranty.html
old mode 100755
new mode 100644
diff --git a/template/Panels/PromoBoxRowThree.html b/template/Panels/PromoBoxRowThree.html
index 3233367..b7f8324 100644
--- a/template/Panels/PromoBoxRowThree.html
+++ b/template/Panels/PromoBoxRowThree.html
@@ -1,7 +1,7 @@
 <div class="promo-box-row">
 	<ul>
-		<li><a href="#"><img src="%%GLOBAL_IMG_PATH%%/largePromo01.png"></a></li>
-		<li><a href="#"><img src="%%GLOBAL_IMG_PATH%%/largePromo02.png"></a></li>
-		<li><a href="#"><img src="%%GLOBAL_IMG_PATH%%/largePromo03.png"></a></li>
+		<li><a href="#"><img src="%%ASSET_images/largePromo01.png%%"></a></li>
+		<li><a href="#"><img src="%%ASSET_images/largePromo02.png%%"></a></li>
+		<li><a href="#"><img src="%%ASSET_images/largePromo03.png%%"></a></li>
 	</ul>
 </div>
\ No newline at end of file
diff --git a/template/Panels/PurchaseGiftCertificate.html b/template/Panels/PurchaseGiftCertificate.html
old mode 100755
new mode 100644
diff --git a/template/Panels/QuickViewContent.html b/template/Panels/QuickViewContent.html
old mode 100755
new mode 100644
index 6e00ec7..71c6a50
--- a/template/Panels/QuickViewContent.html
+++ b/template/Panels/QuickViewContent.html
@@ -1,4 +1,4 @@
-<link rel="stylesheet" media="screen" href="%%GLOBAL_ShopPath%%/javascript/jquery/themes/cupertino/ui.all.css?%%GLOBAL_JSCacheToken%%">
+<link rel="stylesheet" media="screen" href="%%GLOBAL_CdnAppPath%%/javascript/jquery/themes/cupertino/ui.all.css?%%GLOBAL_JSCacheToken%%">
 
 <script>
 	lang.OptionMessage = "%%GLOBAL_OptionMessage%%";
@@ -25,7 +25,7 @@
 		<div class="row">
 			<div class="twelve columns">
 				<a href="%%GLOBAL_QuickViewProductURL%%">
-					<img src="%%GLOBAL_ThumbImageURL%%" />
+					<img src="%%GLOBAL_ThumbImageURL%%" alt="">
 				</a>
 			</div>
 		</div>
diff --git a/template/Panels/RedeemGiftCertificate.html b/template/Panels/RedeemGiftCertificate.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SearchFormAdvanced.html b/template/Panels/SearchFormAdvanced.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SearchJavaScript.html b/template/Panels/SearchJavaScript.html
old mode 100755
new mode 100644
index 929aef2..878b422
--- a/template/Panels/SearchJavaScript.html
+++ b/template/Panels/SearchJavaScript.html
@@ -1,10 +1,10 @@
-<script src="javascript/jquery/plugins/jstree/jquery.jstree.js"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/jquery/plugins/jstree/jquery.jstree.js"></script>
 <script>
 	lang.CompareSelectMessage = '%%LNG_CompareSelectMessage%%';
 	lang.PleaseSelectAProduct = '%%LNG_PleaseSelectAProduct%%';
 	config.CompareLink = '%%GLOBAL_CompareLink%%';
 	config.ShopPath = '%%GLOBAL_ShopPath%%';
-	config.AppPath = '%%GLOBAL_AppPath%%';
+	config.AppPath = ''; // BIG-8939: Deprecated, do not use.
 	
 	$(document).ready(function() {
 		showSearchTabs("%%GLOBAL_SelectedSearchTab%%");
diff --git a/template/Panels/SearchPage.html b/template/Panels/SearchPage.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SearchPageHeader.html b/template/Panels/SearchPageHeader.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SearchPageProducts.html b/template/Panels/SearchPageProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SearchTabContents.html b/template/Panels/SearchTabContents.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SearchTabProducts.html b/template/Panels/SearchTabProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SearchTips.html b/template/Panels/SearchTips.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ShareProductById.html b/template/Panels/ShareProductById.html
old mode 100755
new mode 100644
diff --git a/template/Panels/ShareProductChoices.html b/template/Panels/ShareProductChoices.html
old mode 100755
new mode 100644
index 86e21c9..d382f01
--- a/template/Panels/ShareProductChoices.html
+++ b/template/Panels/ShareProductChoices.html
@@ -1,10 +1,10 @@
 <div id="ChooseAnotherProduct">
   <div id="SharingDataWrapper">
 	<p>To share a different product, just select it from those shown below.</p>
-	<a id="ImageScrollPrev" class="prev" href="#"><img src="%%GLOBAL_IMG_PATH%%/LeftArrow.png" alt="" width="20" height="20" /></a>
+	<a id="ImageScrollPrev" class="prev" href="#"><img src="%%ASSET_images/LeftArrow.png%%" alt="" width="20" height="20" /></a>
 	<div id="SharingDataChoices">
 		<ul id="productlist"></ul>
 	</div>
-	<a id="ImageScrollNext" class="next" href="#"><img src="%%GLOBAL_IMG_PATH%%/RightArrow.png" alt="" width="20" height="20" /></a>
+	<a id="ImageScrollNext" class="next" href="#"><img src="%%ASSET_images/RightArrow.png%%" alt="" width="20" height="20" /></a>
   </div>
 </div>
diff --git a/template/Panels/ShippingAddressForm.html b/template/Panels/ShippingAddressForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideAccountMenu.html b/template/Panels/SideAccountMenu.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideAccountStoreCredit.html b/template/Panels/SideAccountStoreCredit.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideBrandTagCloud.html b/template/Panels/SideBrandTagCloud.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCartContents.html b/template/Panels/SideCartContents.html
old mode 100755
new mode 100644
index 74a91e0..dc03083
--- a/template/Panels/SideCartContents.html
+++ b/template/Panels/SideCartContents.html
@@ -1,7 +1,8 @@
-%%GLOBAL_SideCartItemCount%%
+<span class="r-cart-count" style="display:none;">%%GLOBAL_SideCartItemCount%%</span>
 <script>
 	(function(window, document, $, undefined){
 		// only want the number
-		$('.cart-count').html( $('.cart-count strong').html() );
+		var cartcount = parseInt($('.r-cart-count strong').html());
+		$('.cart-count').html( '(' + cartcount + ')' );
 	})(window, document, jQuery);
 </script>
\ No newline at end of file
diff --git a/template/Panels/SideCategoryList.html b/template/Panels/SideCategoryList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCategoryNewProducts.html b/template/Panels/SideCategoryNewProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCategoryPopularProducts.html b/template/Panels/SideCategoryPopularProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCategoryShopByPrice.html b/template/Panels/SideCategoryShopByPrice.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCategoryTopSellers.html b/template/Panels/SideCategoryTopSellers.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCouponCodeBox.html b/template/Panels/SideCouponCodeBox.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCurrencySelector.html b/template/Panels/SideCurrencySelector.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideCustomCategoryList.html b/template/Panels/SideCustomCategoryList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideGiftCertificateCodeBox.html b/template/Panels/SideGiftCertificateCodeBox.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideLiveChatServices.html b/template/Panels/SideLiveChatServices.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideNewProducts.html b/template/Panels/SideNewProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideNewsletterBox.html b/template/Panels/SideNewsletterBox.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SidePopularProducts.html b/template/Panels/SidePopularProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SidePopularVendors.html b/template/Panels/SidePopularVendors.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideProductAddToWishList.html b/template/Panels/SideProductAddToWishList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideProductAlsoBought.html b/template/Panels/SideProductAlsoBought.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideProductRecentlyViewed.html b/template/Panels/SideProductRecentlyViewed.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideProductRelated.html b/template/Panels/SideProductRelated.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideShopByBrand.html b/template/Panels/SideShopByBrand.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideShopByBrandFull.html b/template/Panels/SideShopByBrandFull.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideSubPageList.html b/template/Panels/SideSubPageList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideTopSellers.html b/template/Panels/SideTopSellers.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SideVendorPageList.html b/template/Panels/SideVendorPageList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SimilarMultiProductsByCustomerViews.html b/template/Panels/SimilarMultiProductsByCustomerViews.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SimilarProductsByCustomerViews.html b/template/Panels/SimilarProductsByCustomerViews.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SimilarProductsByTag.html b/template/Panels/SimilarProductsByTag.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SitemapBreadcrumb.html b/template/Panels/SitemapBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SitemapContent.html b/template/Panels/SitemapContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SocialLinks.html b/template/Panels/SocialLinks.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SocialSharingTabs.html b/template/Panels/SocialSharingTabs.html
old mode 100755
new mode 100644
diff --git a/template/Panels/SuggestiveCartContent.html b/template/Panels/SuggestiveCartContent.html
old mode 100755
new mode 100644
diff --git a/template/Panels/Syndicate.html b/template/Panels/Syndicate.html
old mode 100755
new mode 100644
index 32c51d8..ba10a7a
--- a/template/Panels/Syndicate.html
+++ b/template/Panels/Syndicate.html
@@ -5,8 +5,8 @@
 
 	<p>%%LNG_SyndicateNewsIntro%%</p>
 
-	<p><a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=rss"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=rss">%%LNG_SyndicateNewsRSS%%</a><br />
-	<a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=atom"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=atom">%%LNG_SyndicateNewsAtom%%</a></p>
+	<p><a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=rss"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=rss">%%LNG_SyndicateNewsRSS%%</a><br />
+	<a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=atom"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=atom">%%LNG_SyndicateNewsAtom%%</a></p>
 </div>
 
 <div style="display: %%GLOBAL_ShowNewProductsFeed%%">
@@ -14,8 +14,8 @@
 
 	<p>%%LNG_SyndicateNewProductsIntro%%</p>
 
-	<p><a href="%%GLOBAL_ShopPath%%/rss.php?type=rss"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?type=rss">%%LNG_SyndicateNewProductsRSS%%</a><br />
-	<a href="%%GLOBAL_ShopPath%%/rss.php?type=atom"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?type=atom">%%LNG_SyndicateNewProductsAtom%%</a></p>
+	<p><a href="%%GLOBAL_ShopPath%%/rss.php?type=rss"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?type=rss">%%LNG_SyndicateNewProductsRSS%%</a><br />
+	<a href="%%GLOBAL_ShopPath%%/rss.php?type=atom"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?type=atom">%%LNG_SyndicateNewProductsAtom%%</a></p>
 </div>
 
 <div style="display: %%GLOBAL_ShowPopularProductsFeed%%">
@@ -23,8 +23,8 @@
 
 	<p>%%LNG_SyndicatePopularProductsIntro%%</p>
 
-	<p><a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=rss"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=rss">%%LNG_SyndicatePopularProductsRSS%%</a><br />
-	<a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=atom"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=atom">%%LNG_SyndicatePopularProductsAtom%%</a></p>
+	<p><a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=rss"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=rss">%%LNG_SyndicatePopularProductsRSS%%</a><br />
+	<a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=atom"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=atom">%%LNG_SyndicatePopularProductsAtom%%</a></p>
 </div>
 
 <div style="display: %%GLOBAL_ShowFeaturedProductsFeed%%">
@@ -32,8 +32,8 @@
 
 	<p>%%LNG_SyndicateFeaturedProductsIntro%%</p>
 
-	<p><a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=rss"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=rss">%%LNG_SyndicateFeaturedProductsRSS%%</a><br />
-	<a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=atom"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=atom">%%LNG_SyndicateFeaturedProductsAtom%%</a></p>
+	<p><a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=rss"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=rss">%%LNG_SyndicateFeaturedProductsRSS%%</a><br />
+	<a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=atom"><img src="%%ASSET_images/RSS.gif%%" border="0" alt="" /></a> <a href="%%GLOBAL_ShopPath%%/rss.php?action=featuredproducts&amp;type=atom">%%LNG_SyndicateFeaturedProductsAtom%%</a></p>
 </div>
 
 <div style="display: %%GLOBAL_ShowSearchFeed%%">
diff --git a/template/Panels/TagProducts.html b/template/Panels/TagProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/TopMenu.html b/template/Panels/TopMenu.html
old mode 100755
new mode 100644
index 6522352..98c3d19
--- a/template/Panels/TopMenu.html
+++ b/template/Panels/TopMenu.html
@@ -1,3 +1,9 @@
+<div class="mobile-cart-link" style="display:%%GLOBAL_HidePurchasingOptions%%">
+	<a href="%%GLOBAL_ShopPathNormal%%/cart.php" style="display:%%GLOBAL_HideCartOptions%%">
+		<i class="icon-shopping-cart"></i> <span class="cart-count"></span>
+	</a>
+</div>
+
 <div class="account-links">
 	<ul class="inline-list">
 		<li style="display:%%GLOBAL_HideAccountOptions%%" class="account-link top-menu-link"><a href="%%GLOBAL_ShopPath%%/account.php"><i class="icon-user"></i> %%LNG_YourAccount%%</a></li>
@@ -9,8 +15,8 @@
 		%%Panel.SideCurrencySelector%%
 		<li style="display:%%GLOBAL_HidePurchasingOptions%%" class="cart-link top-menu-link">
 			<a href="%%GLOBAL_ShopPathNormal%%/cart.php" style="display:%%GLOBAL_HideCartOptions%%">
-				<span class="cart-count">%%Panel.SideCartContents%%</span>
-				<i class="icon-shopping-cart"></i>View Cart
+				<i class="icon-shopping-cart"></i>View Cart <span class="cart-count"></span>
+				%%Panel.SideCartContents%%
 			</a>
 		</li>
 		<li class="store-credit top-menu-link hide-size-desktop">
diff --git a/template/Panels/ValutecCardPaymentJavaScript.html b/template/Panels/ValutecCardPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Panels/VendorFeaturedItems.html b/template/Panels/VendorFeaturedItems.html
old mode 100755
new mode 100644
diff --git a/template/Panels/VendorList.html b/template/Panels/VendorList.html
old mode 100755
new mode 100644
diff --git a/template/Panels/VendorLogo.html b/template/Panels/VendorLogo.html
old mode 100755
new mode 100644
index 67cf1c7..0d8cfad
--- a/template/Panels/VendorLogo.html
+++ b/template/Panels/VendorLogo.html
@@ -1,5 +1,5 @@
 <div class="Block Moveable Panel"  id="VendorLogo">
 	<div class="BlockContent">
-		<img src="%%GLOBAL_VendorLogo%%" alt="" />
+		<img src="%%GLOBAL_VendorLogo%%" alt="">
 	</div>
 </div>
\ No newline at end of file
diff --git a/template/Panels/VendorPhoto.html b/template/Panels/VendorPhoto.html
old mode 100755
new mode 100644
index 48f4ab9..b327dde
--- a/template/Panels/VendorPhoto.html
+++ b/template/Panels/VendorPhoto.html
@@ -1,5 +1,5 @@
 <div class="Block Moveable Panel"  id="VendorPhoto">
 	<div class="BlockContent">
-		<img src="%%GLOBAL_VendorPhoto%%" alt="" />
+		<img src="%%GLOBAL_VendorPhoto%%" alt="">
 	</div>
 </div>
\ No newline at end of file
diff --git a/template/Panels/VendorProducts.html b/template/Panels/VendorProducts.html
old mode 100755
new mode 100644
diff --git a/template/Panels/VendorProfile.html b/template/Panels/VendorProfile.html
old mode 100755
new mode 100644
diff --git a/template/Panels/WishListAddForm.html b/template/Panels/WishListAddForm.html
old mode 100755
new mode 100644
diff --git a/template/Panels/WishListItems.html b/template/Panels/WishListItems.html
old mode 100755
new mode 100644
diff --git a/template/Panels/WishLists.html b/template/Panels/WishLists.html
old mode 100755
new mode 100644
diff --git a/template/Panels/WishlistBreadcrumb.html b/template/Panels/WishlistBreadcrumb.html
old mode 100755
new mode 100644
diff --git a/template/Panels/WrapperBanner.html b/template/Panels/WrapperBanner.html
old mode 100755
new mode 100644
diff --git a/template/Panels/_FastCart.html b/template/Panels/_FastCart.html
old mode 100755
new mode 100644
diff --git a/template/Panels/_QuickView.html b/template/Panels/_QuickView.html
old mode 100755
new mode 100644
diff --git a/template/Panels/eSelectPlusDPPaymentJavaScript.html b/template/Panels/eSelectPlusDPPaymentJavaScript.html
old mode 100755
new mode 100644
diff --git a/template/Previews/responsive.jpg b/template/Previews/responsive.jpg
new file mode 100644
index 0000000..3467809
Binary files /dev/null and b/template/Previews/responsive.jpg differ
diff --git a/template/Snippets/AccountDownloadItemList.html b/template/Snippets/AccountDownloadItemList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountDownloadOrderItemLink.html b/template/Snippets/AccountDownloadOrderItemLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountInboxMessage.html b/template/Snippets/AccountInboxMessage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountInboxOrderItem.html b/template/Snippets/AccountInboxOrderItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountNewReturnItem.html b/template/Snippets/AccountNewReturnItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderItem.html b/template/Snippets/AccountOrderItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderItemDownloadLink.html b/template/Snippets/AccountOrderItemDownloadLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderItemList.html b/template/Snippets/AccountOrderItemList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderItemRow.html b/template/Snippets/AccountOrderItemRow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderItemShippingRow.html b/template/Snippets/AccountOrderItemShippingRow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderShipmentRow.html b/template/Snippets/AccountOrderShipmentRow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderStatusItem.html b/template/Snippets/AccountOrderStatusItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountOrderTotalRow.html b/template/Snippets/AccountOrderTotalRow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AccountRecentlyViewedProducts.html b/template/Snippets/AccountRecentlyViewedProducts.html
old mode 100755
new mode 100644
index ed8a26a..4488658
--- a/template/Snippets/AccountRecentlyViewedProducts.html
+++ b/template/Snippets/AccountRecentlyViewedProducts.html
@@ -1,13 +1,19 @@
-<li>
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_SearchTrackClass%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%" class="%%GLOBAL_SearchTrackClass%%">%%GLOBAL_ProductName%%</a></strong>
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductCompareButton" style="display:%%GLOBAL_HideCompareItems%%">
-		<input type="checkbox" class="CheckBox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)" /> <label for="compare_%%GLOBAL_ProductId%%">%%LNG_Compare%%</label>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/AccountReturnItem.html b/template/Snippets/AccountReturnItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AddThisCounter.html b/template/Snippets/AddThisCounter.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/AddThisLink.html b/template/Snippets/AddThisLink.html
old mode 100755
new mode 100644
index 42d8d33..72a854b
--- a/template/Snippets/AddThisLink.html
+++ b/template/Snippets/AddThisLink.html
@@ -1,6 +1,6 @@
 <div class="AddThisButtonBox">
 	<!-- AddThis Button BEGIN -->
-	<div class="addthis_toolbox addthis_default_style ">
+	<div class="addthis_toolbox addthis_default_style " %%GLOBAL_AddThisServiceButtonMeta%%>
 		%%GLOBAL_AddThisServiceButtons%%
 	</div>
 	<script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4e94ed470ee51e32"></script>
diff --git a/template/Snippets/AddressLabel.html b/template/Snippets/AddressLabel.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/BlogRecentPostsContentItem.html b/template/Snippets/BlogRecentPostsContentItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/BlogRecentPostsItem.html b/template/Snippets/BlogRecentPostsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/BrandCloudItem.html b/template/Snippets/BrandCloudItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/BrandMainPageMessage.html b/template/Snippets/BrandMainPageMessage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/BrandProductsItem.html b/template/Snippets/BrandProductsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/BreadcrumbItem.html b/template/Snippets/BreadcrumbItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/BreadcrumbItemCurrent.html b/template/Snippets/BreadcrumbItemCurrent.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartCoupon.html b/template/Snippets/CartCoupon.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartEditProductFieldsForm.html b/template/Snippets/CartEditProductFieldsForm.html
old mode 100755
new mode 100644
index 0e8d3c9..9c0f29f
--- a/template/Snippets/CartEditProductFieldsForm.html
+++ b/template/Snippets/CartEditProductFieldsForm.html
@@ -1,6 +1,4 @@
-<script type="text/javascript" src="%%GLOBAL_ShopPath%%/javascript/cart.js?%%GLOBAL_JSCacheToken%%"></script>
-<script type="text/javascript" src="%%GLOBAL_jQueryUIPath%%"></script>
-<link rel="stylesheet" type="text/css" media="screen" href="%%GLOBAL_ShopPath%%/javascript/jquery/themes/cupertino/ui.all.css?%%GLOBAL_JSCacheToken%%" />
+<link rel="stylesheet" type="text/css" media="screen" href="%%GLOBAL_CdnAppPath%%/javascript/jquery/themes/cupertino/ui.all.css?%%GLOBAL_JSCacheToken%%" />
 
 <h3 id="ModalTitle">%%GLOBAL_CustomizeProductTitle%%</h3>
 
@@ -24,4 +22,4 @@
 		<a href="#" onclick="return $.modal.close();" class="small secondary button">%%LNG_Cancel%%</a>
 		<input class="small button" type="submit" value="%%LNG_Save%%" />
 	</div>
-</form>
\ No newline at end of file
+</form>
diff --git a/template/Snippets/CartGiftCertificate.html b/template/Snippets/CartGiftCertificate.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartItem.html b/template/Snippets/CartItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartItemGiftCertificate.html b/template/Snippets/CartItemGiftCertificate.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartItemQtySelect.html b/template/Snippets/CartItemQtySelect.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartItemQtyText.html b/template/Snippets/CartItemQtyText.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductAttribute.html b/template/Snippets/CartProductAttribute.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductAttributesList.html b/template/Snippets/CartProductAttributesList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductFieldCheckbox.html b/template/Snippets/CartProductFieldCheckbox.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductFieldFile.html b/template/Snippets/CartProductFieldFile.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductFieldInput.html b/template/Snippets/CartProductFieldInput.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductFieldSelect.html b/template/Snippets/CartProductFieldSelect.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductFieldTextarea.html b/template/Snippets/CartProductFieldTextarea.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartProductFields.html b/template/Snippets/CartProductFields.html
old mode 100755
new mode 100644
index 42b6bf3..88e2110
--- a/template/Snippets/CartProductFields.html
+++ b/template/Snippets/CartProductFields.html
@@ -1,2 +1,2 @@
-<dt class="ProductField"><img src="%%GLOBAL_IMG_PATH%%/NodeJoin.gif" /><span class="fieldLabel">%%GLOBAL_CustomFieldName%%:</span></dt>
+<dt class="ProductField"><img src="%%ASSET_images/NodeJoin.gif%%"><span class="fieldLabel">%%GLOBAL_CustomFieldName%%:</span></dt>
 <dd class="ProductField">%%GLOBAL_CustomFieldValue%%</dd>
\ No newline at end of file
diff --git a/template/Snippets/CartShippingDeliveryDisclaimer.html b/template/Snippets/CartShippingDeliveryDisclaimer.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartShippingQuoteRow.html b/template/Snippets/CartShippingQuoteRow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartShippingTransitTime.html b/template/Snippets/CartShippingTransitTime.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CartTotalTaxRow.html b/template/Snippets/CartTotalTaxRow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryNoProductsMessage.html b/template/Snippets/CategoryNoProductsMessage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryPaging.html b/template/Snippets/CategoryPaging.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryPagingItem.html b/template/Snippets/CategoryPagingItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryPagingItemCurrent.html b/template/Snippets/CategoryPagingItemCurrent.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryPagingNext.html b/template/Snippets/CategoryPagingNext.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryPagingPrevious.html b/template/Snippets/CategoryPagingPrevious.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryProductsItem.html b/template/Snippets/CategoryProductsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategoryProductsItemList.html b/template/Snippets/CategoryProductsItemList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CategorySortBox.html b/template/Snippets/CategorySortBox.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CheckoutBillingAddressFields.html b/template/Snippets/CheckoutBillingAddressFields.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CheckoutCartItem.html b/template/Snippets/CheckoutCartItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CheckoutCartItemGiftCertificate.html b/template/Snippets/CheckoutCartItemGiftCertificate.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CheckoutCartTotal.html b/template/Snippets/CheckoutCartTotal.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CheckoutMailFormatPreference.html b/template/Snippets/CheckoutMailFormatPreference.html
old mode 100755
new mode 100644
index 222c2b6..4098c33
--- a/template/Snippets/CheckoutMailFormatPreference.html
+++ b/template/Snippets/CheckoutMailFormatPreference.html
@@ -1,4 +1,4 @@
-<span class="ShowIf_join_mailing_list_Checked ShowIf_join_order_list_Checked"><span style="visibility:hidden;"><!-- spacing only --><input type="checkbox" disabled="disabled" /></span><img src="%%GLOBAL_IMG_PATH%%/NodeJoin.gif" /> %%LNG_IPreferThisEmailFormat%% <select name="mail_format_preference">
+<span class="ShowIf_join_mailing_list_Checked ShowIf_join_order_list_Checked"><span style="visibility:hidden;"><!-- spacing only --><input type="checkbox" disabled="disabled" /></span><img src="%%ASSET_images/NodeJoin.gif%%"> %%LNG_IPreferThisEmailFormat%% <select name="mail_format_preference">
 	%%GLOBAL_MailFormatPreferenceOptions%%
 </select><br /></span>
 <script language="javascript" type="text/javascript">//<![CDATA[
diff --git a/template/Snippets/CheckoutProviderOption.html b/template/Snippets/CheckoutProviderOption.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CheckoutShippingAddressItem.html b/template/Snippets/CheckoutShippingAddressItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CheckoutTaxLine.html b/template/Snippets/CheckoutTaxLine.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareButton.html b/template/Snippets/CompareButton.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareButtonList.html b/template/Snippets/CompareButtonList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductCustomField.html b/template/Snippets/CompareProductCustomField.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD1.html b/template/Snippets/CompareProductTD1.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD2.html b/template/Snippets/CompareProductTD2.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD3.html b/template/Snippets/CompareProductTD3.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD4.html b/template/Snippets/CompareProductTD4.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD5.html b/template/Snippets/CompareProductTD5.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD6.html b/template/Snippets/CompareProductTD6.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD7.html b/template/Snippets/CompareProductTD7.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD8.html b/template/Snippets/CompareProductTD8.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTD9.html b/template/Snippets/CompareProductTD9.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR1.html b/template/Snippets/CompareProductTR1.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR2.html b/template/Snippets/CompareProductTR2.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR3.html b/template/Snippets/CompareProductTR3.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR4.html b/template/Snippets/CompareProductTR4.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR5.html b/template/Snippets/CompareProductTR5.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR6.html b/template/Snippets/CompareProductTR6.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR7.html b/template/Snippets/CompareProductTR7.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR8.html b/template/Snippets/CompareProductTR8.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CompareProductTR9.html b/template/Snippets/CompareProductTR9.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ConfirmOrderCoupon.html b/template/Snippets/ConfirmOrderCoupon.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ConfirmOrderGiftCertificate.html b/template/Snippets/ConfirmOrderGiftCertificate.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CookieNotification.html b/template/Snippets/CookieNotification.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/CustomizeItemJavascript.html b/template/Snippets/CustomizeItemJavascript.html
old mode 100755
new mode 100644
index 6d9ee5b..9f790b5
--- a/template/Snippets/CustomizeItemJavascript.html
+++ b/template/Snippets/CustomizeItemJavascript.html
@@ -19,5 +19,5 @@
 	});
 
 	%%GLOBAL_ProductAttributesJavascript%%
-	}, 1);
+	}, 100);
 //]]></script>
\ No newline at end of file
diff --git a/template/Snippets/DefaultNewsletterSubscriptionForm.html b/template/Snippets/DefaultNewsletterSubscriptionForm.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/DesignModeFooter.html b/template/Snippets/DesignModeFooter.html
old mode 100755
new mode 100644
index e2b0248..5a6040d
--- a/template/Snippets/DesignModeFooter.html
+++ b/template/Snippets/DesignModeFooter.html
@@ -1,10 +1,10 @@
 <link rel="stylesheet" type="text/css" media="screen" href="%%GLOBAL_AppPath%%/admin/Styles/new.css?%%GLOBAL_JSCacheToken%%" />
 <script src="%%GLOBAL_jQueryUIPath%%" type="text/javascript"></script>
-<script src="%%GLOBAL_AppPath%%/lib/designmode/designmode.js?%%GLOBAL_JSCacheToken%%" type="text/javascript"></script>
+<script src="/lib/designmode/designmode.js?%%GLOBAL_JSCacheToken%%" type="text/javascript"></script>
 <script type="text/javascript">//<![CDATA[
 	DesignMode.currentTemplate = '%%GLOBAL_DesignModeCurrentTemplate%%';
 	DesignMode.url = '%%GLOBAL_DesignModeUpdateUrl%%';
-	DesignMode.remoteUrl = '%%GLOBAL_AppPath%%/remote.php';
+	DesignMode.remoteUrl = '/remote.php';
 	lang.DesignModeSave = "%%LNG_DesignModeSave%%";
 	lang.DesignModeUndo = "%%LNG_DesignModeUndo%%";
 	lang.DesignModeToggle = "%%LNG_DesignModeToggle%%";
diff --git a/template/Snippets/EstimatedShippingQuote.html b/template/Snippets/EstimatedShippingQuote.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/EstimatedShippingQuoteList.html b/template/Snippets/EstimatedShippingQuoteList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/EstimatedShippingQuoteProduct.html b/template/Snippets/EstimatedShippingQuoteProduct.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/EventDate.html b/template/Snippets/EventDate.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ExpressCheckoutAddress.html b/template/Snippets/ExpressCheckoutAddress.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ExpressCheckoutChooseAddress.html b/template/Snippets/ExpressCheckoutChooseAddress.html
old mode 100755
new mode 100644
index 0d56d69..0aee420
--- a/template/Snippets/ExpressCheckoutChooseAddress.html
+++ b/template/Snippets/ExpressCheckoutChooseAddress.html
@@ -7,7 +7,7 @@
 				<label style="%%GLOBAL_HideShippingOptions%%"><input type="checkbox" name="%%GLOBAL_ShipToBillingName%%_existing" id="%%GLOBAL_ShipToBillingName%%_existing" value="1" checked="checked"> %%LNG_AlsoWantToShipToThisAddress%%</label>
 			</p>
 			<input class="button %%GLOBAL_AddressType%%Button" type="submit" value="%%GLOBAL_UseAddressTitle%%">
-			<span class="LoadingIndicator" style="display: none"><img src="%%GLOBAL_IMG_PATH%%/Loading.gif" alt=""></span>
+			<span class="LoadingIndicator" style="display: none"><img src="%%ASSET_images/Loading.gif%%" alt=""></span>
 		</blockquote>
 		<label><input type="radio" onclick="ExpressCheckout.ToggleAddressType('%%GLOBAL_UpperAddressType%%', 'Add');" value="new" name="%%GLOBAL_UpperAddressType%%AddressType" id="%%GLOBAL_UpperAddressType%%AddressTypeNew" /> %%GLOBAL_AddNewAddress%%</label>
 	</div>
@@ -30,12 +30,12 @@
 					%%LNG_AlsoWantToShipToThisAddress%%
 				</label>
 			</dd>
-			
+
 			<dt class="hidden"></dt>
 			<dd>
 				<p>
 					<input class="button %%GLOBAL_AddressType%%Button" type="submit" value="%%GLOBAL_UseAddressTitle%%">
-					<span class="LoadingIndicator" style="display: none"><img src="%%GLOBAL_IMG_PATH%%/Loading.gif" alt=""></span>
+					<span class="LoadingIndicator" style="display: none"><img src="%%ASSET_images/Loading.gif%%" alt=""></span>
 				</p>
 			</dd>
 		</dl>
diff --git a/template/Snippets/ExpressCheckoutChooseShipper.html b/template/Snippets/ExpressCheckoutChooseShipper.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ExpressCheckoutConfirmation.html b/template/Snippets/ExpressCheckoutConfirmation.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ExpressCheckoutCreateAccount.html b/template/Snippets/ExpressCheckoutCreateAccount.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ExpressCheckoutShippingMethod.html b/template/Snippets/ExpressCheckoutShippingMethod.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/FacebookLikeButton.html b/template/Snippets/FacebookLikeButton.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/FastCartThickBoxContent.html b/template/Snippets/FastCartThickBoxContent.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/FastCartThickBoxJs.html b/template/Snippets/FastCartThickBoxJs.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/FeaturedCategoryList.html b/template/Snippets/FeaturedCategoryList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/FlyoutNode.html b/template/Snippets/FlyoutNode.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/FlyoutTree.html b/template/Snippets/FlyoutTree.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/GiftWrappingWrapOptions.html b/template/Snippets/GiftWrappingWrapOptions.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/HomeCurrencyFlags.html b/template/Snippets/HomeCurrencyFlags.html
old mode 100755
new mode 100644
index 7e3bd69..c4fb35c
--- a/template/Snippets/HomeCurrencyFlags.html
+++ b/template/Snippets/HomeCurrencyFlags.html
@@ -1 +1 @@
-<a href="#" onclick="setCurrency(%%GLOBAL_CurrencyID%%);"><img src="%%GLOBAL_CurrencyFlagURL%%" border="0" title="%%GLOBAL_CurrencyName%%" %%GLOBAL_CurrencyClass%% /></a>
\ No newline at end of file
+<a href="#" onclick="setCurrency(%%GLOBAL_CurrencyID%%);"><img src="%%GLOBAL_CurrencyFlagURL%%" border="0" title="%%GLOBAL_CurrencyName%%" %%GLOBAL_CurrencyClass%%></a>
\ No newline at end of file
diff --git a/template/Snippets/HomeFeaturedProductsFeed.html b/template/Snippets/HomeFeaturedProductsFeed.html
old mode 100755
new mode 100644
index 9963b24..99d36e4
--- a/template/Snippets/HomeFeaturedProductsFeed.html
+++ b/template/Snippets/HomeFeaturedProductsFeed.html
@@ -1,3 +1,3 @@
 <span class="FeedLink FloatRight">
-	<a href="%%GLOBAL_ShopPath%%/rss.php?type=rss&action=featuredproducts"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" alt="RSS" title="%%LNG_FeaturedProductsFeed%%" /></a>
+	<a href="%%GLOBAL_ShopPath%%/rss.php?type=rss&action=featuredproducts"><img src="%%ASSET_images/RSS.gif%%" alt="RSS" title="%%LNG_FeaturedProductsFeed%%"></a>
 </span>
\ No newline at end of file
diff --git a/template/Snippets/HomeFeaturedProductsItem.html b/template/Snippets/HomeFeaturedProductsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/HomeNewProductsFeed.html b/template/Snippets/HomeNewProductsFeed.html
old mode 100755
new mode 100644
index 57113c7..83c1e66
--- a/template/Snippets/HomeNewProductsFeed.html
+++ b/template/Snippets/HomeNewProductsFeed.html
@@ -1,3 +1,3 @@
 <span class="FeedLink FloatRight">
-	<a href="%%GLOBAL_ShopPath%%/rss.php?type=rss"><img src="%%GLOBAL_IMG_PATH%%/RSS.gif" alt="RSS" title="%%LNG_NewProductsFeed%%" /></a>
+	<a href="%%GLOBAL_ShopPath%%/rss.php?type=rss"><img src="%%ASSET_images/RSS.gif%%" alt="RSS" title="%%LNG_NewProductsFeed%%"></a>
 </span>
\ No newline at end of file
diff --git a/template/Snippets/HomeNewProductsItem.html b/template/Snippets/HomeNewProductsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/HomeRecentBlogsFeed.html b/template/Snippets/HomeRecentBlogsFeed.html
old mode 100755
new mode 100644
index 822b157..36ab6eb
--- a/template/Snippets/HomeRecentBlogsFeed.html
+++ b/template/Snippets/HomeRecentBlogsFeed.html
@@ -1,4 +1,4 @@
 <span class="FeedLink FloatRight">
 	<a href="%%GLOBAL_ShopPath%%/rss.php?action=newblogs&amp;type=rss">
-	<img src="%%GLOBAL_IMG_PATH%%/RSS.gif" alt="" title="%%LNG_RecentBlogsFeed%%" /></a>
+	<img src="%%ASSET_images/RSS.gif%%" alt="" title="%%LNG_RecentBlogsFeed%%"></a>
 </span>
\ No newline at end of file
diff --git a/template/Snippets/HomeSaleProductsItem.html b/template/Snippets/HomeSaleProductsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/InvoiceCartItem.html b/template/Snippets/InvoiceCartItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/InvoiceCustomerDetails.html b/template/Snippets/InvoiceCustomerDetails.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/InvoicePendingPaymentDetails.html b/template/Snippets/InvoicePendingPaymentDetails.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/InvoicePendingPaymentNotice.html b/template/Snippets/InvoicePendingPaymentNotice.html
old mode 100755
new mode 100644
index 0bcf827..9209d42
--- a/template/Snippets/InvoicePendingPaymentNotice.html
+++ b/template/Snippets/InvoicePendingPaymentNotice.html
@@ -1,5 +1,5 @@
 <br />
 <div style="width:100%; padding:10px; background-color:#FFEFEF">
-	<img src="%%GLOBAL_IMG_PATH%%/ErrorMessage.gif" alt="" />&nbsp;
+	<img src="%%ASSET_images/ErrorMessage.gif%%" alt="">&nbsp;
 	%%LNG_InvoicePendingPaymentText%%
 </div>
diff --git a/template/Snippets/ListCheckForm.html b/template/Snippets/ListCheckForm.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/LogoImage.html b/template/Snippets/LogoImage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/LogoText.html b/template/Snippets/LogoText.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/MaintenanceNotice.html b/template/Snippets/MaintenanceNotice.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/MessageBox.html b/template/Snippets/MessageBox.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/MobileSiteLink.html b/template/Snippets/MobileSiteLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/MultiShippingItem.html b/template/Snippets/MultiShippingItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/OfflinePaymentMessage.html b/template/Snippets/OfflinePaymentMessage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PageMenu.html b/template/Snippets/PageMenu.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PageMenuDropDown.html b/template/Snippets/PageMenuDropDown.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PageRSSItem.html b/template/Snippets/PageRSSItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PageSubMenu.html b/template/Snippets/PageSubMenu.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PinterestButton.html b/template/Snippets/PinterestButton.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PopularVendorsItem.html b/template/Snippets/PopularVendorsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PostTag.html b/template/Snippets/PostTag.html
old mode 100755
new mode 100644
index fae39a1..90fceaf
--- a/template/Snippets/PostTag.html
+++ b/template/Snippets/PostTag.html
@@ -1,3 +1 @@
-<li class="blog-tag">
-	<span>%%GLOBAL_TagName%%</span>
-</li>
\ No newline at end of file
+<a href="%%GLOBAL_TagUrl%%"><li class="blog-tag"><span>%%GLOBAL_TagName%%</span></li></a>
diff --git a/template/Snippets/PostTags.html b/template/Snippets/PostTags.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PrintableInvoice.html b/template/Snippets/PrintableInvoice.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PrintableInvoiceItem.html b/template/Snippets/PrintableInvoiceItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PrintableInvoiceItemConfigurableField.html b/template/Snippets/PrintableInvoiceItemConfigurableField.html
old mode 100755
new mode 100644
index add3235..651ab2e
--- a/template/Snippets/PrintableInvoiceItemConfigurableField.html
+++ b/template/Snippets/PrintableInvoiceItemConfigurableField.html
@@ -1,4 +1,5 @@
 <div class="ConfigurableProductRow">
 	<div class="Label">%%GLOBAL_FieldName%%</div>
+	<div class="Value">%%GLOBAL_SKUValue%%</div>
 	<div class="Value">%%GLOBAL_FieldValue%%</div>
 </div>
\ No newline at end of file
diff --git a/template/Snippets/PrintableInvoiceTotalRow.html b/template/Snippets/PrintableInvoiceTotalRow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/PrintablePackingSlipItem.html b/template/Snippets/PrintablePackingSlipItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductAddToCart.html b/template/Snippets/ProductAddToCart.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductAddToCartBelow.html b/template/Snippets/ProductAddToCartBelow.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductAddToCartRight.html b/template/Snippets/ProductAddToCartRight.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductBreadCrumb.html b/template/Snippets/ProductBreadCrumb.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductBulkDiscountThickBox.html b/template/Snippets/ProductBulkDiscountThickBox.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductCustomFieldItem.html b/template/Snippets/ProductCustomFieldItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductExpectedReleaseDate.html b/template/Snippets/ProductExpectedReleaseDate.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductFieldCheckbox.html b/template/Snippets/ProductFieldCheckbox.html
old mode 100755
new mode 100644
index b1b0647..83e605b
--- a/template/Snippets/ProductFieldCheckbox.html
+++ b/template/Snippets/ProductFieldCheckbox.html
@@ -1,8 +1,8 @@
-<div class="DetailRow">
-	<div class="Label">
+<div class="DetailRow row">
+	<div class="Label column">
 		%%GLOBAL_ProductFieldRequired%%%%GLOBAL_CheckboxFieldNameLeft%%:
 	</div>
-	<div class="Value">
+	<div class="Value column">
 		<input type="%%GLOBAL_ProductFieldType%%" name="ProductFields[%%GLOBAL_ProductFieldId%%]" size="%%GLOBAL_ProductFieldInputSize%%" class="CheckBox %%GLOBAL_FieldRequiredClass%%" %%GLOBAL_ProductFieldValue%%  />
 		%%GLOBAL_CheckboxFieldNameRight%%
 	</div>
diff --git a/template/Snippets/ProductFieldInput.html b/template/Snippets/ProductFieldInput.html
old mode 100755
new mode 100644
index 33aea45..bddf95a
--- a/template/Snippets/ProductFieldInput.html
+++ b/template/Snippets/ProductFieldInput.html
@@ -1,8 +1,8 @@
-<div class="DetailRow">
-	<div class="Label">
+<div class="DetailRow row">
+	<div class="Label column">
 		%%GLOBAL_ProductFieldRequired%%%%GLOBAL_ProductFieldName%%:
 	</div>
-	<div class="Value">
+	<div class="Value column">
 		<input type="%%GLOBAL_ProductFieldType%%" name="ProductFields[%%GLOBAL_ProductFieldId%%]" class="Textbox %%GLOBAL_FieldRequiredClass%%" size="%%GLOBAL_ProductFieldInputSize%%" value="%%GLOBAL_ProductFieldValue%%" />
 
 		<span id="CartFileName_%%GLOBAL_ProductFieldId%%" style="%%GLOBAL_HideCartFileName%%">
diff --git a/template/Snippets/ProductFieldSelect.html b/template/Snippets/ProductFieldSelect.html
old mode 100755
new mode 100644
index bdfd3af..bd67a32
--- a/template/Snippets/ProductFieldSelect.html
+++ b/template/Snippets/ProductFieldSelect.html
@@ -1,8 +1,8 @@
-<div class="DetailRow">
-	<div class="Label">
+<div class="DetailRow row">
+	<div class="Label column">
 		%%GLOBAL_ProductFieldRequired%%%%GLOBAL_ProductFieldName%%:
 	</div>
-	<div class="Value">
+	<div class="Value column">
 		<select name="ProductFields[%%GLOBAL_ProductFieldId%%]" class="SelectBox %%GLOBAL_FieldRequiredClass%%" size="%%GLOBAL_ProductFieldInputSize%%">
 			%%GLOBAL_SelectOptions%%
 		</select>
diff --git a/template/Snippets/ProductFieldTextarea.html b/template/Snippets/ProductFieldTextarea.html
old mode 100755
new mode 100644
index c7a2ad6..edb9e01
--- a/template/Snippets/ProductFieldTextarea.html
+++ b/template/Snippets/ProductFieldTextarea.html
@@ -1,8 +1,8 @@
-<div class="DetailRow">
-	<div class="Label">
+<div class="DetailRow row">
+	<div class="Label column">
 		%%GLOBAL_ProductFieldRequired%%%%GLOBAL_ProductFieldName%%:
 	</div>
-	<div class="Value">
+	<div class="Value column">
 		<textarea cols="30" rows="3" name="ProductFields[%%GLOBAL_ProductFieldId%%]" class="%%GLOBAL_FieldRequiredClass%%">%%GLOBAL_ProductFieldValue%%</textarea>
 	</div>
 </div>
\ No newline at end of file
diff --git a/template/Snippets/ProductFindByCategory.html b/template/Snippets/ProductFindByCategory.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductFindByCategoryItem.html b/template/Snippets/ProductFindByCategoryItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductImageZoomer.html b/template/Snippets/ProductImageZoomer.html
old mode 100755
new mode 100644
index 536fea1..d2533b6
--- a/template/Snippets/ProductImageZoomer.html
+++ b/template/Snippets/ProductImageZoomer.html
@@ -1,4 +1,4 @@
-<script type="text/javascript" src="%%GLOBAL_AppPath%%/javascript/jquery/plugins/jqzoom/jquery.jqzoom-core.js?%%GLOBAL_JSCacheToken%%"></script>
+<script type="text/javascript" src="%%GLOBAL_CdnAppPath%%/javascript/jquery/plugins/jqzoom/jquery.jqzoom-core.js?%%GLOBAL_JSCacheToken%%"></script>
 <script type="text/javascript">//<![CDATA[
 	var ZoomImageURLs = new Array();
 	%%GLOBAL_ProdImageZoomJavascript%%
diff --git a/template/Snippets/ProductImagesLightBox.html b/template/Snippets/ProductImagesLightBox.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductOptionList.html b/template/Snippets/ProductOptionList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductOptionListItem.html b/template/Snippets/ProductOptionListItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductReviewBadCaptcha.html b/template/Snippets/ProductReviewBadCaptcha.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductReviewItem.html b/template/Snippets/ProductReviewItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductReviewList.html b/template/Snippets/ProductReviewList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductReviewNextLink.html b/template/Snippets/ProductReviewNextLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductReviewPaging.html b/template/Snippets/ProductReviewPaging.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductReviewPreviousLink.html b/template/Snippets/ProductReviewPreviousLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductTagCloudItem.html b/template/Snippets/ProductTagCloudItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductThumbImage.html b/template/Snippets/ProductThumbImage.html
old mode 100755
new mode 100644
index a10ca8e..c29d07d
--- a/template/Snippets/ProductThumbImage.html
+++ b/template/Snippets/ProductThumbImage.html
@@ -1,3 +1,3 @@
 <a itemprop="image" href="%%GLOBAL_InitialZoomImage%%" class="main-image-link">
-	<img src="%%GLOBAL_ThumbImageURL%%" class="wide-image main-image" alt="%%GLOBAL_ImageDescription%%" title="%%GLOBAL_ImageDescription%%" />
+	<img src="%%GLOBAL_ThumbImageURL%%" class="wide-image main-image" alt="%%GLOBAL_ImageDescription%%" title="%%GLOBAL_ImageDescription%%">
 </a>
\ No newline at end of file
diff --git a/template/Snippets/ProductThumbImagePlaceholder.html b/template/Snippets/ProductThumbImagePlaceholder.html
old mode 100755
new mode 100644
index d893f02..09ec0e0
--- a/template/Snippets/ProductThumbImagePlaceholder.html
+++ b/template/Snippets/ProductThumbImagePlaceholder.html
@@ -1 +1 @@
-<img src="%%GLOBAL_ThumbImageURL%%" class="wide-image" alt="%%GLOBAL_ImageDescription%%" title="%%GLOBAL_ImageDescription%%" />
\ No newline at end of file
+<img src="%%GLOBAL_ThumbImageURL%%" class="wide-image" alt="%%GLOBAL_ImageDescription%%" title="%%GLOBAL_ImageDescription%%">
\ No newline at end of file
diff --git a/template/Snippets/ProductTinyImage.html b/template/Snippets/ProductTinyImage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductUpdatesRadio.html b/template/Snippets/ProductUpdatesRadio.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductVariationListMultiple.html b/template/Snippets/ProductVariationListMultiple.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductVariationListMultipleItem.html b/template/Snippets/ProductVariationListMultipleItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductVariationListSingle.html b/template/Snippets/ProductVariationListSingle.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductVariationListSingleItem.html b/template/Snippets/ProductVariationListSingleItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductVariationMultiple.html b/template/Snippets/ProductVariationMultiple.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ProductVendorsOtherProductsItem.html b/template/Snippets/ProductVendorsOtherProductsItem.html
old mode 100755
new mode 100644
index 5009e5a..da99e1f
--- a/template/Snippets/ProductVendorsOtherProductsItem.html
+++ b/template/Snippets/ProductVendorsOtherProductsItem.html
@@ -1,13 +1,19 @@
-<li class="%%GLOBAL_AlternateClass%%">
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%" class="%%GLOBAL_SearchTrackClass%%">%%GLOBAL_ProductName%%</a></strong>
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-		<a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/QuickSearchJS.html b/template/Snippets/QuickSearchJS.html
old mode 100755
new mode 100644
index 634c82a..c35212d
--- a/template/Snippets/QuickSearchJS.html
+++ b/template/Snippets/QuickSearchJS.html
@@ -1 +1 @@
-<script type="text/javascript" src="%%GLOBAL_ShopPath%%/javascript/quicksearch.js?%%GLOBAL_JSCacheToken%%"></script>
\ No newline at end of file
+<script type="text/javascript" src="%%GLOBAL_CdnAppPath%%/javascript/quicksearch.js?%%GLOBAL_JSCacheToken%%"></script>
diff --git a/template/Snippets/QuickViewJs.html b/template/Snippets/QuickViewJs.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/RecentBlog.html b/template/Snippets/RecentBlog.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/RelatedSearchItem.html b/template/Snippets/RelatedSearchItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultAJAXNews.html b/template/Snippets/SearchResultAJAXNews.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultAJAXPage.html b/template/Snippets/SearchResultAJAXPage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultAJAXProduct.html b/template/Snippets/SearchResultAJAXProduct.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultGrid.html b/template/Snippets/SearchResultGrid.html
old mode 100755
new mode 100644
index a9f39ab..8bd5646
--- a/template/Snippets/SearchResultGrid.html
+++ b/template/Snippets/SearchResultGrid.html
@@ -1,4 +1,4 @@
-<ul class="pagination" style="display: %%GLOBAL_HideSectionPaging%%">
+<ul class="pagination CategoryPagination" style="display: %%GLOBAL_HideSectionPaging%%">
 	<li class="arrow">%%GLOBAL_SectionPagingPrevious%%</li>
 	<li>%%LNG_Pages%%:</li>
 	%%GLOBAL_SectionPaging%%
@@ -24,7 +24,7 @@
 	</ul>
 </div>
 
-<ul class="pagination" style="display: %%GLOBAL_HideSectionPaging%%">
+<ul class="pagination CategoryPagination" style="display: %%GLOBAL_HideSectionPaging%%">
 	<li class="arrow">%%GLOBAL_SectionPagingPrevious%%</li>
 	<li>%%LNG_Pages%%:</li>
 	%%GLOBAL_SectionPaging%%
diff --git a/template/Snippets/SearchResultNews.html b/template/Snippets/SearchResultNews.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultPage.html b/template/Snippets/SearchResultPage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultProductGrid.html b/template/Snippets/SearchResultProductGrid.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultProductList.html b/template/Snippets/SearchResultProductList.html
old mode 100755
new mode 100644
index 759e570..cfff1fe
--- a/template/Snippets/SearchResultProductList.html
+++ b/template/Snippets/SearchResultProductList.html
@@ -1,20 +1,29 @@
-							<li class="%%GLOBAL_AlternateClass%% ListView">
-								<div class="ProductImage QuickView" data-product="%%GLOBAL_ProductId%%">
-									%%GLOBAL_ProductThumb%%
-								</div>
-								<div class="ProductDetails">
-									<span class="ProductRightCol">
-										<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
-										<span class="ProductQty" style="visibility:hidden;">
-											%%GLOBAL_AddToCartQty%%
-										</span>
-									</span>
-									<strong><a href="%%GLOBAL_ProductLink%%" class="TrackLink">%%GLOBAL_ProductName%%</a></strong>
-									<div class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></div>
-									<div class="ProductDescription">%%GLOBAL_ProductDescription%%</div>
-									<div class="ProductCompareButton" style="display:%%GLOBAL_HideCompareItems%%;visibility:hidden;">
-										<input type="checkbox" class="CheckBox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)" /> <label for="compare_%%GLOBAL_ProductId%%">%%LNG_Compare%%</label> <br />
-									</div>
-								</div>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
 
-							</li>
\ No newline at end of file
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+
+	<div class="ProductDetails">
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%" style="%%GLOBAL_HideProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<span class="has-tip tip-right" title="Read Reviews">
+					<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+				</span>
+			</a>
+		</span>
+		<span class="ProductQty">%%GLOBAL_AddToCartQty%%</span>
+		<div class="ProductDescription">%%GLOBAL_ProductDescription%%</div>
+		<div class="ProductCompareButton" style="display:%%GLOBAL_HideCompareItems%%">
+			<label for="compare_%%GLOBAL_ProductId%%">
+				<input type="checkbox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)">
+				%%LNG_Compare%%
+			</label>
+		</div>
+	</div>
+
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
+</li>							
\ No newline at end of file
diff --git a/template/Snippets/SearchResultSectionContent.html b/template/Snippets/SearchResultSectionContent.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultSectionProduct.html b/template/Snippets/SearchResultSectionProduct.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SearchResultsFeed.html b/template/Snippets/SearchResultsFeed.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SelectGiftWrapping.html b/template/Snippets/SelectGiftWrapping.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ShippingProviderItem.html b/template/Snippets/ShippingProviderItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ShippingQuote.html b/template/Snippets/ShippingQuote.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ShippingQuoteProduct.html b/template/Snippets/ShippingQuoteProduct.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ShopByBrandAllItem.html b/template/Snippets/ShopByBrandAllItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ShopByBrandItem.html b/template/Snippets/ShopByBrandItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/ShopByPriceItem.html b/template/Snippets/ShopByPriceItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideAddItemSoldOut.html b/template/Snippets/SideAddItemSoldOut.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideCartContentsCheckoutLink.html b/template/Snippets/SideCartContentsCheckoutLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideCartItem.html b/template/Snippets/SideCartItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideCategoryList.html b/template/Snippets/SideCategoryList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideCategoryNewProducts.html b/template/Snippets/SideCategoryNewProducts.html
old mode 100755
new mode 100644
index 3672abb..da99e1f
--- a/template/Snippets/SideCategoryNewProducts.html
+++ b/template/Snippets/SideCategoryNewProducts.html
@@ -1,15 +1,19 @@
-<li class="%%GLOBAL_AlternateClass%%">
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></strong>
-	</div>
-	<div class="ProductPriceRating">
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-		<a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/SideCategoryNewProductsFeed.html b/template/Snippets/SideCategoryNewProductsFeed.html
old mode 100755
new mode 100644
index a51788c..227dc40
--- a/template/Snippets/SideCategoryNewProductsFeed.html
+++ b/template/Snippets/SideCategoryNewProductsFeed.html
@@ -1,5 +1,5 @@
 <span class="FeedLink FloatRight">
 	<a href="%%GLOBAL_ShopPath%%/rss.php?type=rss&amp;categoryid=%%GLOBAL_CatId%%">
-		<img src="%%GLOBAL_IMG_PATH%%/RSS.gif" title="%%LNG_CategoryNewProductsFeed%%" alt="RSS" />
+		<img src="%%ASSET_images/RSS.gif%%" title="%%LNG_CategoryNewProductsFeed%%" alt="RSS">
 	</a>
 </span>
\ No newline at end of file
diff --git a/template/Snippets/SideCategoryPopularProducts.html b/template/Snippets/SideCategoryPopularProducts.html
old mode 100755
new mode 100644
index 52144bc..c8c450e
--- a/template/Snippets/SideCategoryPopularProducts.html
+++ b/template/Snippets/SideCategoryPopularProducts.html
@@ -1,15 +1,19 @@
-							<li class="%%GLOBAL_AlternateClass%%">
-								<div class="ProductImage">
-									%%GLOBAL_ProductThumb%%
-								</div>
-								<div class="ProductDetails">
-									<strong><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></strong>
-								</div>
-								<div class="ProductPriceRating">
-									<em>%%GLOBAL_ProductPrice%%</em>
-									<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-								</div>
-								<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-									<strong><a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a></strong>
-								</div>
-							</li>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
+
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+
+	<div class="ProductDetails">
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
+	</div>
+
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
+</li>
\ No newline at end of file
diff --git a/template/Snippets/SideCategoryPopularProductsFeed.html b/template/Snippets/SideCategoryPopularProductsFeed.html
old mode 100755
new mode 100644
index 5c50ff6..dab7d58
--- a/template/Snippets/SideCategoryPopularProductsFeed.html
+++ b/template/Snippets/SideCategoryPopularProductsFeed.html
@@ -1,5 +1,5 @@
 <span class="FeedLink FloatRight">
 	<a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=rss&amp;categoryid=%%GLOBAL_CatId%%">
-		<img src="%%GLOBAL_IMG_PATH%%/RSS.gif" alt="RSS" title="%%LNG_CategoryPopularProductsFeed%%" />
+		<img src="%%ASSET_images/RSS.gif%%" alt="RSS" title="%%LNG_CategoryPopularProductsFeed%%">
 	</a>
 </span>
\ No newline at end of file
diff --git a/template/Snippets/SideCategoryTopSellers.html b/template/Snippets/SideCategoryTopSellers.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideCurrencySelectorCurrency.html b/template/Snippets/SideCurrencySelectorCurrency.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideCustomCategoryList.html b/template/Snippets/SideCustomCategoryList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideNewProducts.html b/template/Snippets/SideNewProducts.html
old mode 100755
new mode 100644
index 7ce1e54..c8c450e
--- a/template/Snippets/SideNewProducts.html
+++ b/template/Snippets/SideNewProducts.html
@@ -1,15 +1,19 @@
-							<li class="%%GLOBAL_AlternateClass%%">
-								<div class="ProductImage">
-									%%GLOBAL_ProductThumb%%
-								</div>
-								<div class="ProductDetails">
-									<strong><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></strong>
-								</div>
-								<div class="ProductPriceRating">
-									<em>%%GLOBAL_ProductPrice%%</em>
-									<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-								</div>
-								<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-									<strong><a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a></strong>
-								</div>
-							</li>
\ No newline at end of file
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
+
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+
+	<div class="ProductDetails">
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
+	</div>
+
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
+</li>
\ No newline at end of file
diff --git a/template/Snippets/SideNewProductsFeed.html b/template/Snippets/SideNewProductsFeed.html
old mode 100755
new mode 100644
index 12b5d39..9937480
--- a/template/Snippets/SideNewProductsFeed.html
+++ b/template/Snippets/SideNewProductsFeed.html
@@ -1,5 +1,5 @@
 <span class="FeedLink FloatRight">
 	<a href="%%GLOBAL_ShopPath%%/rss.php?type=rss">
-		<img src="%%GLOBAL_IMG_PATH%%/RSS.gif" title="%%LNG_NewProductsFeed%%" alt="RSS" />
+		<img src="%%ASSET_images/RSS.gif%%" title="%%LNG_NewProductsFeed%%" alt="RSS">
 	</a>
 </span>
\ No newline at end of file
diff --git a/template/Snippets/SidePageLink.html b/template/Snippets/SidePageLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SidePopularProducts.html b/template/Snippets/SidePopularProducts.html
old mode 100755
new mode 100644
index 46147e2..da99e1f
--- a/template/Snippets/SidePopularProducts.html
+++ b/template/Snippets/SidePopularProducts.html
@@ -1,15 +1,19 @@
-<li class="%%GLOBAL_AlternateClass%%">
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></strong>
-	</div>
-	<div class="ProductPriceRating">
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" %%GLOBAL_ProductRatingImageDimensions%% style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-		<a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/SidePopularProductsFeed.html b/template/Snippets/SidePopularProductsFeed.html
old mode 100755
new mode 100644
index 5ab8f01..26e7f8f
--- a/template/Snippets/SidePopularProductsFeed.html
+++ b/template/Snippets/SidePopularProductsFeed.html
@@ -1,5 +1,5 @@
 <span class="FeedLink FloatRight">
 	<a href="%%GLOBAL_ShopPath%%/rss.php?action=popularproducts&amp;type=rss">
-		<img src="%%GLOBAL_IMG_PATH%%/RSS.gif" title="%%LNG_PopularProductsFeed%%" alt="RSS" />
+		<img src="%%ASSETS_images/RSS.gif%%" title="%%LNG_PopularProductsFeed%%" alt="RSS">
 	</a>
 </span>
\ No newline at end of file
diff --git a/template/Snippets/SideProductAlsoBoughtItem.html b/template/Snippets/SideProductAlsoBoughtItem.html
old mode 100755
new mode 100644
index 2981f29..86b7ea3
--- a/template/Snippets/SideProductAlsoBoughtItem.html
+++ b/template/Snippets/SideProductAlsoBoughtItem.html
@@ -1,10 +1,16 @@
-<li>
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%" class="%%GLOBAL_SearchTrackClass%%">%%GLOBAL_ProductName%%</a></strong>
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/SideRecentlyViewedProducts.html b/template/Snippets/SideRecentlyViewedProducts.html
old mode 100755
new mode 100644
index 821c84b..75eb2fa
--- a/template/Snippets/SideRecentlyViewedProducts.html
+++ b/template/Snippets/SideRecentlyViewedProducts.html
@@ -1,19 +1,25 @@
-<li>
-	<div class="ComparisonCheckbox">
-		<input style="display:%%GLOBAL_HideSideProductRecentlyViewedCompare%%" type="checkbox" class="CheckBox" name="compare_product_ids" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)" />
-	</div>
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<input type="hidden" name="ProductDetailsID" class="ProductDetailsID" value="%%GLOBAL_ProductId%%" />
-		<strong><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></strong>
-	</div>
-	<div class="ProductPriceRating">
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-		<strong><a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a></strong>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
+		<div class="ProductCompareButton" style="display:%%GLOBAL_HideSideProductRecentlyViewedCompare%%">
+			<label for="compare_%%GLOBAL_ProductId%%">
+				<input type="checkbox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)">
+				%%LNG_Compare%%
+			</label>
+		</div>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/SideRelatedProducts.html b/template/Snippets/SideRelatedProducts.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideTopSellers.html b/template/Snippets/SideTopSellers.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SideTopSellersFirst.html b/template/Snippets/SideTopSellersFirst.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SimilarProductsByCustomerViewsItem.html b/template/Snippets/SimilarProductsByCustomerViewsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SimilarProductsByTagTag.html b/template/Snippets/SimilarProductsByTagTag.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SitemapLink.html b/template/Snippets/SitemapLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SitemapSection.html b/template/Snippets/SitemapSection.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SlideList.html b/template/Snippets/SlideList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SocialLink.html b/template/Snippets/SocialLink.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SocialSharingTabsItem.html b/template/Snippets/SocialSharingTabsItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubBrandDivider.html b/template/Snippets/SubBrandDivider.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubBrandItem.html b/template/Snippets/SubBrandItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubBrandItemImage.html b/template/Snippets/SubBrandItemImage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubBrands.html b/template/Snippets/SubBrands.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubBrandsGrid.html b/template/Snippets/SubBrandsGrid.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubCatItem.html b/template/Snippets/SubCatItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubCatItemImage.html b/template/Snippets/SubCatItemImage.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubCategories.html b/template/Snippets/SubCategories.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/SubCategoriesGrid.html b/template/Snippets/SubCategoriesGrid.html
old mode 100755
new mode 100644
index 28e8f0e..d380fb0
--- a/template/Snippets/SubCategoriesGrid.html
+++ b/template/Snippets/SubCategoriesGrid.html
@@ -1,5 +1,5 @@
 <div class="subcat-grid left">
-	<ul class="hide-last-child">
+	<ul class="hide-empty-last-child">
 		%%SNIPPET_SubCategories%%
 	</ul>
 </div>
\ No newline at end of file
diff --git a/template/Snippets/TagProductsItem.html b/template/Snippets/TagProductsItem.html
old mode 100755
new mode 100644
index 3d0824b..24f0495
--- a/template/Snippets/TagProductsItem.html
+++ b/template/Snippets/TagProductsItem.html
@@ -1,18 +1,25 @@
-<li class="%%GLOBAL_AlternateClass%%">
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%" class="%%GLOBAL_SearchTrackClass%%">%%GLOBAL_ProductName%%</a></strong>
-	</div>
-	<div class="ProductPriceRating">
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductCompareButton" style="%%GLOBAL_HideCompareItems%%">
-		<input type="checkbox" class="CheckBox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)" /> <label for="compare_%%GLOBAL_ProductId%%">%%LNG_Compare%%</label> <br />
-	</div>
-	<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-		<a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
+		<div class="ProductCompareButton" style="display:%%GLOBAL_HideCompareItems%%">
+			<label for="compare_%%GLOBAL_ProductId%%">
+				<input type="checkbox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)">
+				%%LNG_Compare%%
+			</label>
+		</div>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/TopMenuGiftCertificates.html b/template/Snippets/TopMenuGiftCertificates.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/UnformattedAddressLabel.html b/template/Snippets/UnformattedAddressLabel.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/VendorFeaturedItemsItem.html b/template/Snippets/VendorFeaturedItemsItem.html
old mode 100755
new mode 100644
index 3672abb..da99e1f
--- a/template/Snippets/VendorFeaturedItemsItem.html
+++ b/template/Snippets/VendorFeaturedItemsItem.html
@@ -1,15 +1,19 @@
-<li class="%%GLOBAL_AlternateClass%%">
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%" class="%%GLOBAL_AlternateClass%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></strong>
-	</div>
-	<div class="ProductPriceRating">
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-		<a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/VendorListItem.html b/template/Snippets/VendorListItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/VendorProductsItem.html b/template/Snippets/VendorProductsItem.html
old mode 100755
new mode 100644
index aa7dbb7..b52f58c
--- a/template/Snippets/VendorProductsItem.html
+++ b/template/Snippets/VendorProductsItem.html
@@ -1,18 +1,25 @@
-<li>
-	<div class="ProductImage">
-		%%GLOBAL_ProductThumb%%
-	</div>
+<li data-product="%%GLOBAL_ProductId%%">
+	
+	<div class="ProductImage">%%GLOBAL_ProductThumb%%</div>
+	
 	<div class="ProductDetails">
-		<strong><a href="%%GLOBAL_ProductLink%%" class="%%GLOBAL_SearchTrackClass%%">%%GLOBAL_ProductName%%</a></strong>
-	</div>
-	<div class="ProductPriceRating">
-		<em>%%GLOBAL_ProductPrice%%</em>
-		<span class="Rating Rating%%GLOBAL_ProductRating%%"><img src="%%GLOBAL_IMG_PATH%%/IcoRating%%GLOBAL_ProductRating%%.gif" alt="" style="%%GLOBAL_HideProductRating%%" /></span>
-	</div>
-	<div class="ProductCompareButton" style="display:%%GLOBAL_HideCompareItems%%">
-		<input type="checkbox" class="CheckBox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)" /> <label for="compare_%%GLOBAL_ProductId%%">%%LNG_Compare%%</label> <br />
-	</div>
-	<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
-		<a href="%%GLOBAL_ProductURL%%">%%GLOBAL_ProductAddText%%</a>
+		<span class="ProductName"><a href="%%GLOBAL_ProductLink%%">%%GLOBAL_ProductName%%</a></span>
+		<span class="ProductPrice">%%GLOBAL_ProductPrice%%</span>
+		<span class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
+			<a href="%%GLOBAL_ProductURL%%" class="small button">%%GLOBAL_ProductAddText%%</a>
+		</span>
+		<span class="ProductRating ProductRating%%GLOBAL_ProductRating%%">
+			<a class="show-reviews rating-%%GLOBAL_ProductRating%%" href="%%GLOBAL_ProductLink%%#reviews">
+				<i class="icon-rating-%%GLOBAL_ProductRating%%"></i>
+			</a>
+		</span>
+		<div class="ProductCompareButton" style="display:%%GLOBAL_HideCompareItems%%">
+			<label for="compare_%%GLOBAL_ProductId%%">
+				<input type="checkbox" name="compare_product_ids" id="compare_%%GLOBAL_ProductId%%" value="%%GLOBAL_ProductId%%" onclick="product_comparison_box_changed(this.checked)">
+				%%LNG_Compare%%
+			</label>
+		</div>
 	</div>
+	
+	<a href="%%GLOBAL_ProductLink%%" class="overlay-link"></a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/VideoList.html b/template/Snippets/VideoList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/VideoListSide.html b/template/Snippets/VideoListSide.html
old mode 100755
new mode 100644
index 04e95dd..6e0dc3c
--- a/template/Snippets/VideoListSide.html
+++ b/template/Snippets/VideoListSide.html
@@ -1,6 +1,6 @@
 <li class="sideVideoRow">
 	<a href="#" id="sidevideo_%%GLOBAL_VideoId%%">
-		<img style="background-image: url('http://i.ytimg.com/vi/%%GLOBAL_VideoId%%/default.jpg');" src="%%GLOBAL_IMG_PATH%%/VideoOverlay.png" title="%%GLOBAL_VideoTitleLong%%" />
+		<img style="background-image: url('http://i.ytimg.com/vi/%%GLOBAL_VideoId%%/default.jpg');" src="%%ASSET_images/VideoOverlay.png%%" title="%%GLOBAL_VideoTitleLong%%">
 		<div class="VideoSideDescription">%%GLOBAL_VideoTitleLong%%<div> (%%GLOBAL_VideoLength%%)</div></div>
 	</a>
 </li>
\ No newline at end of file
diff --git a/template/Snippets/WishList.html b/template/Snippets/WishList.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/WishListItem.html b/template/Snippets/WishListItem.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/eSelectPlusConfirmationDetails.html b/template/Snippets/eSelectPlusConfirmationDetails.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/eSelectPlusDPConfirmationDetails.html b/template/Snippets/eSelectPlusDPConfirmationDetails.html
old mode 100755
new mode 100644
diff --git a/template/Snippets/eSelectPlusUsConfirmationDetails.html b/template/Snippets/eSelectPlusUsConfirmationDetails.html
old mode 100755
new mode 100644
diff --git a/template/Styles/less/init.less b/template/Styles/less/init.less
index 4850f69..5147e8c 100644
--- a/template/Styles/less/init.less
+++ b/template/Styles/less/init.less
@@ -307,11 +307,6 @@ h1 {
 }
 
 
-.cart-link a span {
-	color: @color-primary;
-}
-
-
 .button {
 	background-color: @color-primary;
 	border-color: darken(@color-primary, 12%);
@@ -464,7 +459,6 @@ body {
 }
 
 body,
-.promo-banner li,
 h3 span {
   background: @page-background;
 }
@@ -546,6 +540,15 @@ ul.social-links a:active, ul.social-links a:hover {
   color: @color-text;
 }
 
+.mobile-cart-link a {
+	background:@color-mobile-cart-link-background;
+	color:@color-mobile-cart-link-text;
+}
+.mobile-cart-link a:hover {
+	background:darken(@color-mobile-cart-link-background,5%);
+	color:@color-mobile-cart-link-text;
+}
+
 .ProductRating i:after,
 .rating-stars i:after,
 .show-reviews i:after {
@@ -601,53 +604,77 @@ footer.main a,
 
 
 
-/* SPROUT COMMERCE - PRODUCT COLUMNS */
-
-/* set product width */
-.page .product-grid li,
-.page .product-grid .ProductImage a {
-  width: percentage( (101 / @setting-product-columns - 1 ) / 100);
-}
-
+/* PRODUCT GRID -- NUM PER ROW */
 /* turn off current margins / clears */
 .page .product-grid li:nth-child(n) { margin-right: 1%; }
 .page .product-grid li:nth-child(n) { clear: none; }
 
-/* update with new margins / clears */
-.page .product-grid li:nth-child(@{setting-product-columns}n+@{setting-product-columns}) { margin-right: 0; }
-.page .product-grid li:nth-child(@{setting-product-columns}n+1) { clear: left; }
-
-
-
-@media only screen and (max-width: 768px) {
+@media only screen and (min-width: 769px) {
+  .page .product-grid li, .page .product-grid li .ProductImage a {
+    width: percentage( (101 / @setting-product-columns - 1 ) / 100);
+  }
+  .page .product-grid li:nth-child(@{setting-product-columns}n+@{setting-product-columns}) {
+    margin-right: 0;
+  }
+  .page .product-grid li:nth-child(@{setting-product-columns}n+1) {
+    clear: left;
+  }
 
-	/* set product width */
-	.responsive .page .product-grid li,
-	.responsive .page .product-grid .ProductImage a {
-	  width: percentage( (101 / @setting-product-columns-tablet - 1 ) / 100);
-	}
-	
-	/* turn off current margins / clears */
-	.responsive .page .product-grid li:nth-child(n) { margin-right: 1%; }
-	.responsive .page .product-grid li:nth-child(n) { clear: none; }
-	
-	/* update with new margins / clears */
-	.responsive .page .product-grid li:nth-child(@{setting-product-columns-tablet}n+@{setting-product-columns-tablet}) { margin-right: 0; }
-	.responsive .page .product-grid li:nth-child(@{setting-product-columns-tablet}n+1) { clear: left; }
+  .sidebar.page .product-grid li, .sidebar.page .product-grid li .ProductImage a {
+    width: percentage( (101 / @setting-product-columns-with-product-filters - 1 ) / 100);
+  }
+  .sidebar.page .product-grid li:nth-child(@{setting-product-columns}n+@{setting-product-columns}) {
+    margin-right: 1%;
+  }
+  .sidebar.page .product-grid li:nth-child(@{setting-product-columns}n+1) {
+    clear: none;
+  }
+  .sidebar.page .product-grid li:nth-child(@{setting-product-columns-with-product-filters}n+@{setting-product-columns-with-product-filters}) {
+    margin-right: 0;
+  }
+  .sidebar.page .product-grid li:nth-child(@{setting-product-columns-with-product-filters}n+1) {
+    clear: left;
+  }
+}
+@media only screen and (max-width: 768px) and (min-width: 481px) {
+  .responsive .page .product-grid li, .responsive .page .product-grid li .ProductImage a {
+    width: percentage( (101 / @setting-product-columns-tablet - 1 ) / 100);
+  }
+  .responsive .page .product-grid li:nth-child(@{setting-product-columns-tablet}n+@{setting-product-columns-tablet}) {
+    margin-right: 0;
+  }
+  .responsive .page .product-grid li:nth-child(@{setting-product-columns-tablet}n+1) {
+    clear: left;
+  }
+  
+  .responsive .sidebar.page .product-grid li, .responsive .sidebar.page .product-grid li .ProductImage a {
+    width: percentage( (101 / @setting-product-columns-with-product-filters-tablet - 1 ) / 100);
+  }
+  .responsive .sidebar.page .product-grid li:nth-child(@{setting-product-columns-tablet}n+@{setting-product-columns-tablet}) {
+    margin-right: 1%;
+  }
+  .responsive .sidebar.page .product-grid li:nth-child(@{setting-product-columns-tablet}n+1) {
+    clear: none;
+  }
+  .responsive .sidebar.page .product-grid li:nth-child(@{setting-product-columns-with-product-filters-tablet}n+@{setting-product-columns-with-product-filters-tablet}) {
+    margin-right: 0;
+  }
+  .responsive .sidebar.page .product-grid li:nth-child(@{setting-product-columns-with-product-filters-tablet}n+1) {
+    clear: left;
+  }
 }
-
 @media only screen and (max-width: 480px) {
-	/* set product width */
-	.responsive .page .product-grid li,
-	.responsive .page .product-grid .ProductImage a {
-	  width: percentage( (101 / @setting-product-columns-mobile - 1 ) / 100);
-	}
-	
-	/* turn off current margins / clears */
-	.responsive .page .product-grid li:nth-child(n) { margin-right: 1%; }
-	.responsive .page .product-grid li:nth-child(n) { clear: none; }
-	
-	/* update with new margins / clears */
-	.responsive .page .product-grid li:nth-child(@{setting-product-columns-mobile}n+@{setting-product-columns-mobile}) { margin-right: 0; }
-	.responsive .page .product-grid li:nth-child(@{setting-product-columns-mobile}n+1) { clear: left; }
+  .responsive .page .product-grid li, .responsive .page .product-grid li .ProductImage a,
+  .responsive .sidebar.page .product-grid li,
+  .responsive .sidebar.page .product-grid li .ProductImage a {
+    width: percentage( (101 / @setting-product-columns-mobile - 1 ) / 100);
+  }
+  .responsive .product-grid li:nth-child(@{setting-product-columns-mobile}n+@{setting-product-columns-mobile}),
+  .responsive .sidebar.page .product-grid li:nth-child(@{setting-product-columns-mobile}n+@{setting-product-columns-mobile}) {
+    margin-right: 0;
+  }
+  .responsive .product-grid li:nth-child(@{setting-product-columns-mobile}n+1),
+  .responsive .sidebar.page .product-grid li:nth-child(@{setting-product-columns-mobile}n+1) {
+    clear: left;
+  }
 }
\ No newline at end of file
diff --git a/template/Styles/less/style-editor-variables.less b/template/Styles/less/style-editor-variables.less
index a48dfed..5b01453 100644
--- a/template/Styles/less/style-editor-variables.less
+++ b/template/Styles/less/style-editor-variables.less
@@ -31,7 +31,7 @@
 
 @font-declaration: '{ "Roboto Condensed":["\"Roboto Condensed\"", "sans-serif"], "Helvetica Neue":["\"Helvetica Neue\"", "Helvetica", "Arial", "sans-serif"], "Helvetica":["Helvetica", "Arial", "sans-serif"], "Arial":["Arial", "sans-serif"], "Open Sans":["\"Open Sans\"", "Arial", "sans-serif"], "Freckle Face":["\"Freckle Face\"", "cursive"], "Exo 2":["\"Exo 2\"", "sans-serif"], "Hammersmith One":["\"Hammersmith One\"", "sans-serif"], "Ceviche One":["\"Ceviche One\"", "cursive"] }';
 
-@color-declaration: '["#333", "#1399BE", "#EDEDED", "#FFF"]';
+@color-declaration: '["#333333", "#1399BE", "#EDEDED", "#FFFFFF"]';
 
 
 /**
@@ -40,13 +40,15 @@
  */
 
 //! @section: Colors
-@color-primary:              #c41c22;       // Dark gray
-@color-secondary:            #002e59;    	// Blue
-@color-heading:              #41413b;
-@color-text:                 #222;
-@color-social-icons:         #222;
-@color-rating-stars:         #222;
-@color-page-background:      #ffffff;
+@color-primary:              				#c41c22;       // Red
+@color-secondary:            				#002e59;    	// Dark blue
+@color-heading:              				#41413b;
+@color-text:                 				#222222;
+@color-social-icons:         				#222222;
+@color-rating-stars:         				#222222;
+@color-page-background:      				#ffffff;
+@color-mobile-cart-link-background:			#c41c22;
+@color-mobile-cart-link-text:				#ffffff;
 //! @endsection
 
 
@@ -87,8 +89,8 @@
  */
 
 //! @section: Fonts
-@font-heading-font:                                        "Roboto Condensed", sans-serif;
-@font-body-font:                                          "Helvetica Neue", Helvetica, Arial, sans-serif;
+@font-heading-font:                         "Roboto Condensed", sans-serif;
+@font-body-font:                            "Helvetica Neue", Helvetica, Arial, sans-serif;
 @font-heading-text:                         @font-body-font;
 //! @endsection
 
@@ -101,8 +103,10 @@
 /*@setting-page-width:                                    80;*/
 /* @setting-page-max-width:                                960; */
 @setting-product-columns:			4;
-@setting-product-columns-tablet:	3;
+@setting-product-columns-tablet:	4;
 @setting-product-columns-mobile:	2;
+@setting-product-columns-with-product-filters:	3;
+@setting-product-columns-with-product-filters-tablet:	2;
 @setting-subcat-img-width:	100;
 @setting-subcat-img-height:	100;
 //! @endsection
diff --git a/template/Styles/styles.css b/template/Styles/styles.css
index 6716044..e4220c8 100644
--- a/template/Styles/styles.css
+++ b/template/Styles/styles.css
@@ -1,4 +1,3 @@
-@import url("//fonts.googleapis.com/css?family=Roboto+Condensed:400,700");
 /* Requires: normalize.css */
 /* Global Reset & Standards ---------------------- */
 *, *:before, *:after {
@@ -3289,7 +3288,7 @@ ul.flyout li.active a, .nav-bar li ul li.active a {
   position: absolute;
   top: 0;
   left: -20px;
-  background: url('../images/foundation/orbit/rotator-black.png?1399515649') no-repeat;
+  background: url('../images/foundation/orbit/rotator-black.png') no-repeat;
   z-index: 3;
 }
 .orbit-wrapper span.rotator.move {
@@ -3308,7 +3307,7 @@ ul.flyout li.active a, .nav-bar li ul li.active a {
 .orbit-wrapper span.mask.move {
   width: 40px;
   left: 0;
-  background: url('../images/foundation/orbit/timer-black.png?1399515649') repeat 0 0;
+  background: url('../images/foundation/orbit/timer-black.png') repeat 0 0;
 }
 .orbit-wrapper span.pause {
   display: block;
@@ -3317,12 +3316,12 @@ ul.flyout li.active a, .nav-bar li ul li.active a {
   position: absolute;
   top: 0;
   left: 0;
-  background: url('../images/foundation/orbit/pause-black.png?1399515649') no-repeat;
+  background: url('../images/foundation/orbit/pause-black.png') no-repeat;
   z-index: 4;
   opacity: 0;
 }
 .orbit-wrapper span.pause.active {
-  background: url('../images/foundation/orbit/pause-black.png?1399515649') no-repeat 0 -40px;
+  background: url('../images/foundation/orbit/pause-black.png') no-repeat 0 -40px;
 }
 .orbit-wrapper .timer:hover span.pause, .orbit-wrapper .timer:focus span.pause, .orbit-wrapper span.pause.active {
   opacity: 1;
@@ -3363,21 +3362,21 @@ ul.flyout li.active a, .nav-bar li ul li.active a {
   cursor: pointer;
 }
 .orbit-wrapper .slider-nav span.right {
-  background: url('../images/foundation/orbit/right-arrow.png?1399515649');
+  background: url('../images/foundation/orbit/right-arrow.png');
   background-size: 100%;
   right: 0;
 }
 .orbit-wrapper .slider-nav span.left {
-  background: url('../images/foundation/orbit/left-arrow.png?1399515649');
+  background: url('../images/foundation/orbit/left-arrow.png');
   background-size: 100%;
   left: 0;
 }
 
 .lt-ie9 .orbit-wrapper .slider-nav span.right {
-  background: url('../images/foundation/orbit/right-arrow-small.png?1399515649');
+  background: url('../images/foundation/orbit/right-arrow-small.png');
 }
 .lt-ie9 .orbit-wrapper .slider-nav span.left {
-  background: url('../images/foundation/orbit/left-arrow-small.png?1399515649');
+  background: url('../images/foundation/orbit/left-arrow-small.png');
 }
 
 /* Bullet Nav ---------------------- */
@@ -3396,7 +3395,7 @@ ul.orbit-bullets li {
   cursor: pointer;
   color: #999999;
   text-indent: -9999px;
-  background: url('../images/foundation/orbit/bullets.jpg?1399515649') no-repeat 4px 0;
+  background: url('../images/foundation/orbit/bullets.jpg') no-repeat 4px 0;
   width: 13px;
   height: 12px;
   overflow: hidden;
@@ -7164,7 +7163,6 @@ a .icon-flip-vertical:before {
   height: 100px;
   margin-left: -50px;
   margin-top: -50px;
-  /* 	background: url(loading.gif) no-repeat; */
   position: fixed;
   top: 50%;
   left: 50%;
@@ -7561,6 +7559,460 @@ html.js .productOptionPickListSwatch .swatchNone .name {
 }
 
 /* close commented backslash hack */
+/*---------shared styles-----------------*/
+.facet-container * {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.facet-container [class^="js-facet-clear"] {
+  font-weight: bold;
+}
+
+/*---------facet-container--------------*/
+/* Styles for facet-container */
+.facet-container {
+  position: relative;
+}
+
+/*# FACET HEADER #*/
+.facet-container .facet-header {
+  font-size: 11px;
+  font-weight: bold;
+  padding: 8px 0;
+  position: relative;
+}
+
+.facet-header.js-facet-accordion-action {
+  cursor: pointer;
+}
+
+.facet-header.js-facet-accordion-action:after {
+  content: "+";
+  display: block;
+  font-size: 12px;
+  position: absolute;
+  right: 0;
+  text-transform: none;
+  top: 10px;
+  vertical-align: middle;
+}
+
+.facet-container.open .js-facet-accordion-action:after {
+  content: "-";
+}
+
+.facet-header .facet-header-title {
+  display: inline-block;
+  font-size: 13px;
+  font-weight: bold;
+  line-height: 18px;
+  margin: 0;
+  padding: 0px;
+  text-transform: capitalize;
+}
+
+.facet-header .js-facet-clear {
+  font-size: 11px;
+  float: right;
+  line-height: 18px;
+  margin-right: 12px;
+}
+
+/*# FACET OPEN AND CLOSE STATES #*/
+.facet-container .facet-body {
+  overflow: hidden;
+}
+
+.facet-container.close .facet-body {
+  display: none;
+}
+
+.facet-container.open .facet-body {
+  display: block;
+}
+
+/*# FACET BODY #*/
+.facet-container .facet-body {
+  margin: 0;
+  padding: 0;
+}
+
+/*# FACETBASE FORMS #*/
+.facet-container .facet-form {
+  margin: 0;
+  padding: 2px 0 8px;
+}
+
+.facet-container .facet-form fieldset {
+  margin: 0;
+  padding: 0;
+}
+
+.facet-container .facet-form .error {
+  color: #ff0000;
+  font-size: 11px;
+  margin: 0 0 8px;
+}
+
+.facet-container .facet-form input {
+  -webkit-appearance: textfield;
+  -moz-appearance: textfield;
+  appearance: textfield;
+  border: 1px solid #999;
+  border-radius: 0px;
+  display: inline-block;
+  font-size: 12px;
+  margin: 0;
+  padding: 5px 0;
+  text-indent: 8px;
+  width: 50px;
+}
+
+.facet-container .facet-form.current input,
+.facet-container .facet-form.focus input {
+  border-color: #666;
+}
+
+.facet-container .facet-form .btn {
+  border-radius: 0;
+  float: none;
+  font-size: 11px;
+  text-decoration: underline;
+  border: 0;
+  background: none;
+  height: 26px;
+  line-height: 26px;
+  margin: 0;
+  padding: 0 8px;
+  cursor: pointer;
+}
+
+.facet-container .facet-form .js-btn-facet-range-clear {
+  background: #fff;
+  color: #999;
+  display: none;
+}
+
+.facet-container .facet-form.current.focus .js-btn-facet-range-clear,
+.facet-container .facet-form.current .js-btn-facet-range-update {
+  display: none;
+}
+
+.facet-container .facet-form.current .js-btn-facet-range-clear,
+.facet-container .facet-form.current.focus .js-btn-facet-range-update {
+  display: inline-block;
+}
+
+/*# FACET OPTION LIST #*/
+.facet-container .facet-options-list {
+  list-style: none;
+  margin: 0 0 8px;
+  padding: 0;
+}
+
+.facet-container .facet-option {
+  cursor: pointer;
+  font-size: 11px;
+  line-height: 16px;
+  margin: 0;
+  padding: 0;
+}
+
+.facet-container .facet-option * {
+  cursor: pointer;
+}
+
+.facet-container .facet-option label,
+.facet-container .facet-option a {
+  display: block;
+  line-height: 14px;
+  padding: 2px 0;
+}
+
+.facet-container .facet-option .facet-option-product-count {
+  font-size: 11px;
+}
+
+/*# SLECTED FACET #*/
+.facet-container .facet-option.selected {
+  position: relative;
+  font-weight: bold;
+}
+
+.facet-option.selected label:after,
+.facet-option.selected a:after {
+  content: "x";
+  display: none;
+  line-height: 1;
+  position: absolute;
+  right: 7px;
+  top: 3px;
+}
+
+.facet-option.selected:hover label:after,
+.facet-option.selected:hover a:after {
+  display: block;
+}
+
+/*# RATINGS #*/
+.facet-option-rating-stars {
+  display: inline-block;
+  margin-right: 5px;
+  vertical-align: middle;
+}
+
+/*# CATEGORY FACETS #*/
+.facet-container-category .facet-option {
+  padding-left: 0;
+}
+
+.facet-container-category.level1 .facet-option {
+  padding-left: 8px;
+}
+
+.facet-container-category.level2 .facet-option {
+  padding-left: 16px;
+}
+
+.facet-container-category.level3 .facet-option {
+  padding-left: 24px;
+}
+
+.facet-container-category.level4 .facet-option {
+  padding-left: 32px;
+}
+
+.facet-container-category.level5 .facet-option {
+  padding-left: 40px;
+}
+
+.facet-container-category .facet-option.level0 {
+  padding-left: 0;
+}
+
+.facet-container-category .facet-option.level1 {
+  padding-left: 8px;
+}
+
+.facet-container-category .facet-option.level2 {
+  padding-left: 16px;
+}
+
+.facet-container-category .facet-option.level3 {
+  padding-left: 24px;
+}
+
+.facet-container-category .facet-option.level4 {
+  padding-left: 32px;
+}
+
+.facet-container-category .facet-category-option-has-children:before {
+  content: '\203A';
+  font-size: 16px;
+  position: absolute;
+  right: 6px;
+}
+
+.facet-container-category .facet-option.level0 .facet-category-option-has-children:before {
+  content: none;
+}
+
+.facet-container-category .facet-option.level1 .facet-category-option-has-children:before {
+  content: none;
+}
+
+.facet-container-category .facet-option.level2 .facet-category-option-has-children:before {
+  content: none;
+}
+
+.facet-container-category .facet-option.level3 .facet-category-option-has-children:before {
+  content: none;
+}
+
+/*# FACET MORE BUTTON #*/
+.facet-options-list + .js-facet-more-options {
+  margin-top: -8px;
+}
+
+.facet-container .btn-facet-more-options {
+  background: none;
+  color: #000;
+  font-size: 11px;
+  font-weight: bold;
+  height: auto;
+  line-height: 16px;
+  margin: 0;
+  padding: 4px 0 6px;
+  text-align: left;
+  width: 100%;
+}
+
+.facet-container .btn-facet-more-options:hover {
+  color: #666;
+}
+
+.facet-container .btn-facet-more-options:before,
+.facet-container .btn-facet-more-options:after {
+  display: inline-block;
+}
+
+.facet-container .btn-facet-more-options:after {
+  margin-left: 5px;
+}
+
+.facet-container .btn-facet-more-options.more:before {
+  content: "More";
+}
+
+.facet-container .btn-facet-more-options.more:after {
+  content: "\00BB";
+}
+
+.facet-container .btn-facet-more-options.less:before {
+  content: "Less";
+}
+
+.facet-container .btn-facet-more-options.less:after {
+  content: "\00ab";
+}
+
+/*---------facet-showing-container --------------*/
+/* Styles for facet selection labels container */
+.js-faceted-showing-container {
+  padding-bottom: 8px;
+}
+
+ul.facet-labels-list {
+  margin: 0 0 3px;
+  padding: 0;
+}
+
+ul.facet-labels-list li {
+  font-size: 11px;
+}
+
+ul.facet-labels-list .facet-label {
+  background: #999;
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  border-radius: 3px;
+  display: inline-block;
+  font-size: 11px;
+  margin: 0 0 4px 0;
+  padding: 3px 5px;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+ul.facet-labels-list a {
+  color: #fff;
+  font-weight: bold;
+  line-height: normal;
+  text-transform: capitalize;
+}
+
+ul.facet-labels-list a:after {
+  content: "x";
+  display: inline-block;
+  font-size: 10px;
+  margin-left: 5px;
+}
+
+.facet-container .js-facet-clear-all {
+  font-size: 12px;
+}
+
+.js-faceted-search-column fieldset {
+  border: 0;
+}
+
+.facet-option-rating-stars i:after {
+  color: rgba(62, 65, 66, 0.2);
+}
+
+/*----------------------------------------------------------------------------------------------------------
+#############################################  MOBILE
+----------------------------------------------------------------------------------------------------------*/
+.js-faceted-search-action {
+  display: none;
+}
+
+.js-faceted-search-column.mobile-in-view {
+  display: block !important;
+  margin: 0;
+}
+
+/* 768px */
+@media screen and (max-width: 600px) {
+  .js-faceted-search-container {
+    margin-bottom: 20px;
+  }
+
+  .js-faceted-showing-container {
+    display: none;
+  }
+
+  .js-faceted-search-column {
+    display: none;
+  }
+
+  .js-faceted-search-action {
+    display: block;
+    margin-bottom: 20px;
+    width: 100%;
+  }
+
+  .facet-container .facet-header {
+    font-size: 18px;
+    padding: 20px 0;
+  }
+
+  .facet-header .facet-header-title {
+    font-size: 16px;
+  }
+
+  .facet-header.js-facet-accordion-action:after {
+    top: 24px;
+  }
+
+  .facet-header .js-facet-clear {
+    font-size: 14px;
+    margin-right: 24px;
+  }
+
+  .facet-container .facet-options-list {
+    margin: 0 0 20px;
+  }
+
+  .facet-container .facet-option {
+    font-size: 14px;
+  }
+
+  .facet-container .facet-option label,
+  .facet-container .facet-option a {
+    padding: 10px 0;
+    line-height: 1;
+  }
+
+  .facet-container .btn-facet-more-options {
+    font-size: 14px;
+    padding: 10px 0 20px;
+  }
+
+  .facet-container .facet-form input {
+    width: 35%;
+  }
+
+  .facet-container .facet-form .btn {
+    height: auto;
+    margin: 10px 0 0;
+    padding: 10px;
+  }
+}
 select {
   width: auto;
   max-width: 100%;
@@ -7678,6 +8130,34 @@ h1, h2, h3, h4, h5, h6 {
   color: black;
 }
 
+/* MAIN CONTENT AREA WITH SIDEBAR COLUMNS */
+.mainsidebar_row > div {
+  width: 75%;
+}
+
+.mainsidebar_row > aside {
+  width: 25%;
+  margin-bottom: 15px;
+}
+
+@media only screen and (max-width: 768px) {
+  .mainsidebar_row > div {
+    width: 66.666% !important;
+    float: right !important;
+  }
+
+  .mainsidebar_row > aside {
+    width: 33.333% !important;
+    float: left !important;
+  }
+}
+@media only screen and (max-width: 600px) {
+  .mainsidebar_row > div,
+  .mainsidebar_row > aside {
+    width: auto !important;
+    float: none !important;
+  }
+}
 .tooltip {
   box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.25);
   text-align: center;
@@ -7773,17 +8253,6 @@ blockquote {
   position: relative;
   width: 24.25%;
 }
-.product-grid li:nth-child(4n+4) {
-  margin-right: 0;
-}
-.product-grid li:nth-child(4n+1) {
-  clear: left;
-}
-.product-grid h5 {
-  font-size: 14px;
-  margin: 0;
-  min-height: 70px;
-}
 .product-grid .ProductDetails {
   margin-top: 5px;
 }
@@ -7831,16 +8300,6 @@ blockquote {
   opacity: 1;
 }
 
-.six .product-grid li, .nine .product-grid li {
-  margin: 1% 1% 0 0;
-  width: 49.5%;
-}
-
-.six .product-grid li:nth-child(2n+2),
-.nine .product-grid li:nth-child(2n+2) {
-  margin-right: 0;
-}
-
 .product-grid table.header {
   display: none;
 }
@@ -7858,48 +8317,56 @@ blockquote {
   width: 100%;
 }
 
-.page .product-list table.header, .page .product-grid.List table.header {
+@media only screen and (max-width: 480px) {
+  .responsive .EstimateShipping > .row > .mobile-two {
+    width: 100% !important;
+  }
+  .responsive #shippingZoneStateName {
+    margin-bottom: 0;
+  }
+}
+.page .product-list.product-grid table.header, .page .product-grid.List table.header {
   display: table;
   margin: 0;
 }
-.page .product-list ul li, .page .product-grid.List ul li {
+.page .product-list.product-grid ul li, .page .product-grid.List ul li {
   margin-right: 0;
   width: 100%;
 }
-.page .product-list .ProductImage, .page .product-grid.List .ProductImage {
+.page .product-list.product-grid .ProductImage, .page .product-grid.List .ProductImage {
   display: block;
   float: left;
   width: 30%;
 }
-.page .product-list .ProductImage img, .page .product-grid.List .ProductImage img {
+.page .product-list.product-grid .ProductImage img, .page .product-grid.List .ProductImage img {
   max-height: 250px;
 }
-.page .product-list .ProductDetails, .page .product-grid.List .ProductDetails {
+.page .product-list.product-grid .ProductDetails, .page .product-grid.List .ProductDetails {
   float: right;
   width: 70%;
   padding-left: 30px;
 }
-.page .product-list .ProductDetails .row, .page .product-grid.List .ProductDetails .row {
+.page .product-list.product-grid .ProductDetails .row, .page .product-grid.List .ProductDetails .row {
   float: right;
   width: 44%;
 }
-.page .product-list .ProductDetails .CustomizeItemLink, .page .product-grid.List .ProductDetails .CustomizeItemLink {
+.page .product-list.product-grid .ProductDetails .CustomizeItemLink, .page .product-grid.List .ProductDetails .CustomizeItemLink {
   float: left;
 }
-.page .product-list h5, .page .product-grid.List h5 {
+.page .product-list.product-grid h5, .page .product-grid.List h5 {
   float: left;
   width: 56%;
 }
-.page .product-list .qty-label, .page .product-grid.List .qty-label {
+.page .product-list.product-grid .qty-label, .page .product-grid.List .qty-label {
   display: none;
 }
-.page .product-list .IndividualPrice, .page .product-grid.List .IndividualPrice {
+.page .product-list.product-grid .IndividualPrice, .page .product-grid.List .IndividualPrice {
   display: inline;
   line-height: 32px;
   position: relative;
   right: 15px;
 }
-.page .product-list .ProductOptions, .page .product-grid.List .ProductOptions {
+.page .product-list.product-grid .ProductOptions, .page .product-grid.List .ProductOptions {
   clear: both;
 }
 
@@ -8441,7 +8908,9 @@ form .area-note, form .LittleNotePassword {
   content: "\f005\f005\f005\f005";
 }
 
-.icon-rating-5:before, .icon-rating-6:before {
+.icon-rating-5:before,
+.icon-rating-6:before,
+.icon-rating-7:before {
   content: "\f005\f005\f005\f005\f005";
 }
 
@@ -8635,10 +9104,6 @@ td.right {
   margin-right: 22px;
 }
 
-.hide-last-child > *:last-child {
-  display: none;
-}
-
 .or {
   text-align: center;
 }
@@ -8771,38 +9236,8 @@ ul.plain {
     right: auto !important;
     top: 0;
   }
-  .responsive .page .product-grid li, .responsive .page .product-grid .ProductImage a,
-  .responsive .nine .product-grid li,
-  .responsive .nine .product-grid .ProductImage a,
-  .responsive .six .product-grid li,
-  .responsive .six .product-grid .ProductImage a {
+  .responsive .page .product-grid li, .responsive .page .product-grid .ProductImage a {
     text-align: center;
-    width: 49.5%;
-  }
-  .responsive .page .product-grid li:nth-child(4n+4),
-  .responsive .nine .product-grid li:nth-child(4n+4),
-  .responsive .six .product-grid li:nth-child(4n+4) {
-    margin-right: 1%;
-  }
-  .responsive .page .product-grid li:nth-child(4n+1),
-  .responsive .nine .product-grid li:nth-child(4n+1),
-  .responsive .six .product-grid li:nth-child(4n+1) {
-    clear: none;
-  }
-  .responsive .page .product-grid li:nth-child(2n+2),
-  .responsive .nine .product-grid li:nth-child(2n+2),
-  .responsive .six .product-grid li:nth-child(2n+2) {
-    margin-right: 0;
-  }
-  .responsive .page .product-grid li:nth-child(2n+1),
-  .responsive .nine .product-grid li:nth-child(2n+1),
-  .responsive .six .product-grid li:nth-child(2n+1) {
-    clear: left;
-  }
-  .responsive .page .product-grid h5,
-  .responsive .nine .product-grid h5,
-  .responsive .six .product-grid h5 {
-    min-height: 40px;
   }
   .responsive .page .product-list table.header, .responsive .page .product-grid.List table.header {
     display: none;
@@ -8862,10 +9297,6 @@ ul.plain {
   }
 }
 @media only screen and (max-width: 480px) {
-  .responsive {
-    /*	// PRODUCT PAGE 
-    	.clearing-assembled.clearing-blackout{display:none;}*/
-  }
   .responsive .logo {
     line-height: inherit;
     margin: 5px 0;
@@ -8911,28 +9342,8 @@ ul.plain {
   .responsive .page .product-list .productAttributes, .responsive .page .product-grid.List .productAttributes {
     text-align: left;
   }
-  .responsive .page .product-grid li, .responsive .page .product-grid .ProductImage a,
-  .responsive .nine .product-grid li,
-  .responsive .nine .product-grid .ProductImage a,
-  .responsive .six .product-grid li,
-  .responsive .six .product-grid .ProductImage a {
-    float: none;
-    text-align: center;
-    margin-right: 0;
-    width: auto;
-  }
-  .responsive .page .product-grid h5,
-  .responsive .nine .product-grid h5,
-  .responsive .six .product-grid h5 {
-    min-height: 40px;
-  }
 }
 /* REACTIVE THEME */
-/* .on-sale-badge {display:none !important;} */
-.cart-count {
-  display: none;
-}
-
 .account.page .top-menu li {
   font-family: "Roboto Condensed", sans-serif;
 }
@@ -9118,7 +9529,32 @@ ul.plain {
   padding-top: 0;
 }
 
+.mobile-cart-link {
+  float: right;
+  top: 0;
+  right: 0;
+  width: 15%;
+  position: absolute;
+}
+.mobile-cart-link a {
+  color: #fff;
+  display: block;
+  padding: 18px 0 18px;
+  line-height: 16px;
+  text-align: center;
+  background: #c41c22;
+  white-space: nowrap;
+}
+.mobile-cart-link a:hover {
+  color: #fff;
+  background: #ae191e;
+}
+
 @media screen and (min-width: 769px) {
+  .mobile-cart-link {
+    display: none;
+  }
+
   .logo-container {
     margin-bottom: 20px;
   }
@@ -9176,6 +9612,9 @@ ul.plain {
   }
 }
 /* DUPLICATED FROM ABOVE MEDIA QUERY FOR RESPONSIVE TOGGLE */
+.responsive-off .mobile-cart-link {
+  display: none;
+}
 .responsive-off .logo-container {
   margin-bottom: 20px;
 }
@@ -9684,7 +10123,7 @@ header {
 }
 .search-form input {
   border: 0;
-  background: none !important;
+  background: #fff !important;
   box-shadow: none;
   border-radius: 0;
   border-top: 1px solid #EDEDED;
@@ -9722,20 +10161,6 @@ header {
   float: none;
   padding: 0 !important;
 }
-.cart-link a {
-  position: relative;
-}
-.cart-link a span {
-  color: #c41c22;
-  font-size: 12px;
-  line-height: 12px;
-  font-weight: bold;
-  position: absolute;
-  top: -13px;
-  left: 0;
-  width: 100%;
-  font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
-}
 
 .account-links {
   position: absolute;
@@ -9910,6 +10335,7 @@ table thead tr th, table tfoot tr td {
 .EstimateShipping .EstimateShippingButtons input.button {
   padding: 6px 20px;
   height: 28px;
+  width: 100%;
 }
 
 .product-list > ul > li, .product-grid.List > ul > li {
@@ -10753,9 +11179,6 @@ footer.main .credit-links p {
 .FastCartThickBox h4 {
   margin-bottom: 0;
 }
-.FastCartThickBox a.button {
-  white-space: nowrap;
-}
 .FastCartThickBox .prodName {
   border: 0;
   padding: 0;
@@ -11006,6 +11429,12 @@ small {
   z-index: 120;
 }
 
+@media only screen and (max-width: 1080px) {
+  .reveal-modal.large {
+    width: 80%;
+    margin-left: -40%;
+  }
+}
 #ModalTitle, .ModalTitle {
   background: none;
   border-left: 0;
@@ -11145,6 +11574,11 @@ label.outStock span.name {
     display: none;
   }
 }
+@media only screen and (max-width: 850px) {
+  .responsive .account-links .inline-list > li {
+    margin-left: 14px;
+  }
+}
 @media only screen and (max-width: 768px) {
   .responsive .logo {
     font-size: 22px;
@@ -11178,16 +11612,16 @@ label.outStock span.name {
     position: absolute;
     top: 0;
     left: 0;
-    width: 100%;
+    width: 85%;
     margin: 0;
   }
   .responsive .search-form input {
     color: #fff;
     border: 0;
     width: 94%;
+    padding-left: 10px;
   }
   .responsive .search-form input:focus {
-    border: 0;
     width: 94%;
   }
   .responsive .search-form button {
@@ -11195,9 +11629,15 @@ label.outStock span.name {
     line-height: 45px;
     margin-right: 15px;
   }
+  .responsive header.main .info-col .search-form input:focus {
+    border-left: 6px solid #c41c22;
+  }
   .responsive .info-col {
     width: auto;
   }
+  .responsive .wrap {
+    border-top: 0;
+  }
   .responsive .page .product-list .ProductPrice, .responsive .page .product-grid.List .ProductPrice {
     float: none;
     width: auto;
@@ -11231,7 +11671,7 @@ label.outStock span.name {
     display: none;
   }
   .responsive .orbit .slide-content {
-    width: 45%;
+    width: 85%;
   }
   .responsive select {
     width: 100%;
@@ -11616,7 +12056,9 @@ header.main .main-menu .toggleMenu.active i {
 
 .promo-banner {
   display: block;
-  margin-bottom: 0;
+  overflow: hidden;
+  background: #EFF0F2;
+  margin: 10px 0;
   font-family: "Roboto Condensed", sans-serif;
   text-transform: uppercase;
 }
@@ -11627,32 +12069,63 @@ header.main .main-menu .toggleMenu.active i {
   list-style: none;
   display: block;
   float: left;
-  padding: 0px 15px;
-  margin: 10px 0;
-  background: #fff;
+  padding: 8px 0 6px;
   width: 33.3333%;
   font-size: 18px;
-  border-right: 1px solid #002e59;
+  position: relative;
   text-align: center;
   color: #002e59;
 }
-.promo-banner li:last-child {
-  border: 0;
-}
 .promo-banner li i {
   padding-right: 5px;
 }
+.promo-banner li em[class^="icon-"], .promo-banner li em[class*=" icon-"] {
+  display: inline-block;
+  font-size: 48px;
+  position: relative;
+  top: -2px;
+}
+.promo-banner li em.icon-tablet {
+  top: 0;
+}
+.promo-banner li em.icon-wrench {
+  font-size: 42px;
+  line-height: 49px;
+  top: -6px;
+}
 .promo-banner li span {
-  font-size: 14px;
+  font-size: 16px;
+  color: #818284;
+  margin-top: 3px;
+  display: block;
+  line-height: 20px;
+  text-align: left;
+}
+.promo-banner li > span {
+  display: inline-block;
 }
 .promo-banner li strong {
-  font-weight: 700;
+  font-weight: 500;
   font-size: 20px;
-}
-.promo-banner li strong, .promo-banner li span {
+  color: #c41c22;
   line-height: 20px;
-  display: block;
-  letter-spacing: 1.5px;
+}
+.promo-banner li:after {
+  content: "";
+  background: #fff;
+  width: 6px;
+  height: 300px;
+  position: absolute;
+  right: -8px;
+  top: -128px;
+  display: inline-block;
+  -webkit-transform: rotate(20deg);
+  -moz-transform: rotate(20deg);
+  -ms-transform: rotate(20deg);
+  transform: rotate(20deg);
+}
+.promo-banner li:last-child:after {
+  display: none;
 }
 
 footer.main {
@@ -11710,8 +12183,8 @@ div.alert-box.secondary {
   .responsive .promo-banner li {
     width: 50%;
   }
-  .responsive .promo-banner li:nth-child(2) {
-    border-right: 0;
+  .responsive .promo-banner li:nth-child(2):after {
+    display: none;
   }
   .responsive .promo-banner li:last-child {
     display: none;
@@ -11733,8 +12206,8 @@ div.alert-box.secondary {
     background: none;
     border: 0;
     line-height: 32px;
-    padding: 0 8px;
-    margin: 8px 15px 0 0;
+    padding: 2px 14px;
+    margin: 8px 0 0;
   }
   .responsive header.main .main-menu {
     margin-top: -35px;
@@ -11771,7 +12244,9 @@ div.alert-box.secondary {
   .responsive .promo-banner li:first-child {
     display: inline-block;
     width: 100%;
-    border: 0;
+  }
+  .responsive .promo-banner li:first-child:after {
+    display: none;
   }
 }
 .responsive-off .wrap {
diff --git a/template/Styles/theme.css b/template/Styles/theme.css
index e69de29..e9ff5ee 100644
--- a/template/Styles/theme.css
+++ b/template/Styles/theme.css
@@ -0,0 +1 @@
+@import url('//fonts.googleapis.com/css?family=Audiowide|Freckle+Face|Exo+2|Hammersmith+One|Ceviche+One|Open+Sans|Roboto+Condensed');.primaryForeground{color:white}.secondaryForeground{color:white}a{color:#c41c22}a:hover,a:focus{color:#ae191e}.button{background-color:#c41c22;border-color:#811216}.button:hover,.button:focus{background-color:#97161a}.button.primary{background-color:#c41c22;border-color:#811216}.button.primary:hover,.button.primary:focus{background-color:#97161a}.button.secondary{background-color:#002e59;border-color:#00060c;color:white}.button.secondary:hover,.button.secondary:focus{background-color:#001426}.button.disabled,.button[disabled]{background-color:#c41c22}.button.disabled:hover,.button[disabled]:hover{background-color:#c41c22}.button.disabled.secondary,.button[disabled].secondary{background-color:#002e59}.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#002e59}.button.dropdown>ul li:hover,.button.dropdown>ul li:focus{background-color:#f8cecf}.button.dropdown.split:hover,.button.dropdown.split:focus{background-color:#c41c22}.button.dropdown.split.secondary:hover,.button.dropdown.split.secondary:focus{background-color:#002e59}.button.dropdown.split>a:hover,.button.dropdown.split>a:focus{background-color:#97161a}.button.dropdown.split>span{background-color:#c41c22;border-left-color:#811216}.button.dropdown.split>span:hover,.button.dropdown.split>span:focus{background-color:#97161a}.button.dropdown.split.secondary>span{background-color:#002e59;border-left-color:#00060c}.button.dropdown.split.secondary>a:hover,.button.dropdown.split.secondary>span:hover,.button.dropdown.split.secondary>a:focus,.button.dropdown.split.secondary>span:focus{background-color:#001426}.tabs dd a:focus,.tabs li a:focus{color:#c41c22}.tabs dd.active,.tabs li.active{border-top-color:#c41c22}.tabs.pill dd.active a,.tabs.pill li.active a{background-color:#c41c22}div.alert-box{background-color:#c41c22}div.alert-box.secondary{background-color:#002e59;color:white}.label{background-color:#c41c22}.label.secondary{background-color:#002e59;color:white}.has-tip:hover,.has-tip:focus{border-bottom-color:#6b0f13;color:#c41c22}.tooltip.opened{color:#c41c22 !important;border-bottom-color:#6b0f13 !important}.panel.callout{background-color:#c41c22;border-color:#97161a}.panel.callout .button{color:#c41c22}ul.accordion{border-bottom-color:#002e59}ul.accordion>li{border-top-color:#002e59}ul.accordion>li>div.title{background-color:#003b72;border-left-color:#002e59;border-right-color:#002e59}ul.accordion>li>div.title:after{content:"";border-color:transparent #000 transparent transparent}ul.accordion>li.active{border-top-color:#c41c22}ul.accordion>li.active .title:after{content:"";border-color:#000 transparent transparent transparent}ul.accordion>li.active .content{border-left-color:#002e59;border-right-color:#002e59}dl.sub-nav dd.active a{background-color:#c41c22}ul.pagination li.current a{background-color:#c41c22}ul.pagination li.current a:hover,ul.pagination li.current a:focus{background-color:#c41c22}.th:hover img,.th:focus img{-webkit-box-shadow:0 0 6px 1px rgba(196,28,34,0.5);-moz-box-shadow:0 0 6px 1px rgba(196,28,34,0.5);box-shadow:0 0 6px 1px rgba(196,28,34,0.5)}div.progress .meter{background-color:#c41c22}div.progress.secondary .meter{background-color:#002e59}.nav-bar>li.active{background-color:#c41c22;border-color:#97161a}.nav-bar>li.active:hover{background:#c41c22}.nav-bar.vertical>li.active{border-right-color:#97161a}.tabs.mobile dd a.active,.tabs.mobile li a.active{background-color:#c41c22}.productOptionPickListSwatch .selectedValue .textureContainer,.productOptionPickListSwatch .selectedValue .swatchColours{border-color:#c41c22}.productOptionViewProductPickListWithImage .selectedValue td{background-color:#c41c22}html.js .productOptionViewRectangle .selectedValue label{border-color:#c41c22}html.js .productOptionViewRectangle .none label,html.js .productOptionViewRectangle .selectedValue.none label{color:#c41c22}div.alert-box{background-color:#c41c22}.panel.callout{background-color:#c41c22;border-color:#97161a}.label{background-color:#c41c22}.callout table .ProductPrice{color:#c41c22}ul.product-thumbs li:hover{border-color:#c41c22}.clearing-assembled .clearing-container ul[data-clearing] li.visible{border-top-color:#c41c22}#rating-stars.rating-1 .icon-star:first-child,#rating-stars.rating-2 .icon-star:nth-child(1),#rating-stars.rating-2 .icon-star:nth-child(2),#rating-stars.rating-3 .icon-star:nth-child(1),#rating-stars.rating-3 .icon-star:nth-child(2),#rating-stars.rating-3 .icon-star:nth-child(3),#rating-stars.rating-4 .icon-star:nth-child(1),#rating-stars.rating-4 .icon-star:nth-child(2),#rating-stars.rating-4 .icon-star:nth-child(3),#rating-stars.rating-4 .icon-star:nth-child(4),#rating-stars.rating-5 .icon-star{color:#c41c22}.QuickSearchHover td{background-color:#002e59}.pagination .ActivePage{background-color:#c41c22}ul.orbit-bullets li.active{background-color:#c41c22}@media only screen and (max-width:480px){.responsive .thumb-nav-wrap>ul li>a:hover{background-color:#002e59}.responsive .thumb-nav-wrap>ul li>a.active{background-color:#c41c22}}@media only screen and (min-width:481px){ul.product-thumbs>li.active{box-shadow:0 3px 0 #c41c22}}.responsive-off ul.product-thumbs>li.active{box-shadow:0 3px 0 #c41c22}h1{color:#c41c22}.button{background-color:#c41c22;border-color:#8e1419}.checkout.page .strong.button{background-color:#c41c22}.button:hover{background-color:#8e1419}.alert-box.secondary,.alert-box.secondary p,.alert-box.secondary div,.alert-box.secondary a{color:white}li.GiftCertificate .ProductName.GiftCertificateName a{color:#c41c22}.express.checkout .secondary.button{color:#c41c22}.express.checkout .panel .button{color:#c41c22}.step-number{background-color:#c41c22}li:hover>.ProductDetails>.ProductName a{color:#c41c22}.subcat-grid li:hover a{color:#c41c22}.inline-list.subcategory-list a:hover{color:#c41c22}.inline-list.dividers li{border-right-color:#002e59}.inline-list.dividers li:first-child{border-right-color:#002e59}.button.wishlist-button{color:#c41c22}.orbit .button{background-color:#c41c22}.account .icon-comment{color:#c41c22}.CurrencyList a.Sel{background-color:#002e59}#currency-chooser .currencies{background-color:#002e59}.wrap{border-top-color:#002e59}header.main .info-col .search-form input{border-color:#002e59}header.main .info-col .search-form button{background-color:#002e59;border-top-color:#002e59;border-right-color:#002e59;border-bottom-color:#002e59}header.main .main-menu.nav ul ul li{background-color:#002e59}header.main .main-menu .toggleMenu i{color:#002e59}header.main .main-menu .toggleMenu.active{background-color:#002e59}.orbit .button{background-color:#c41c22}.promo-banner li{border-right-color:#002e59;color:#002e59}footer.main{background-color:#002e59}@media only screen and (min-width:769px){.main-menu{background-color:#002e59}}.responsive-off .main-menu{background-color:#002e59}@media only screen and (max-width:768px){.responsive header.main .info-col .search-form{background-color:#002e59}.responsive header.main .main-menu>ul{background-color:#002e59}}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:#222}body,h3 span{background:#fff}h1,h2,h3,h4,h5,h6{font-family:"Roboto Condensed",sans-serif;color:#41413b}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#909085}.subheader{color:#909085}blockquote,blockquote p{color:#909085}blockquote cite{color:#76766c}blockquote cite a,blockquote cite a:visited{color:#76766c}abbr,acronym{color:#41413b}.tabs dd a,.tabs li a{color:#6f6f6f}.tabs dd.active a,.tabs li.active a{color:#3c3c3c}ul.social-links a{color:rgba(34,34,34,0.6)}ul.social-links a:active,ul.social-links a:hover{color:#222}.show-reviews i,.rating-stars i,.ProductRating i,.rating-stars i{color:#222}.subcat-grid img{max-width:100;max-height:100}.tooltip,.topmenu-header .phone-number a,.ProductPrice,.ProductPrice strike,.panel .select2 a,.panel.callout table label{color:#222}@media screen and (max-width:768px){.responsive .nav>ul #currency-chooser .currencies a{color:#222}}.account-links a,.account-links div,.logo a{color:#222}.mobile-cart-link a{background:#c41c22;color:#fff}.mobile-cart-link a:hover{background:#ae191e;color:#fff}.ProductRating i:after,.rating-stars i:after,.show-reviews i:after{color:rgba(34,34,34,0.2)}.account.page .top-menu li,.top-menu,.nav ul a,.nav ul div,.logo,.cart .ProductPrice,.IndividualPrice,.page .product-list .ProductName,.page .product-grid.List .ProductName,.express.checkout #CheckoutStepBillingAddress label,.express.checkout .secondary.button,.express.checkout .panel .ExpressCheckoutCompletedContent,.orbit .slide-heading,.orbit .button,.promo-banner,.button,div.alert-box{font-family:"Roboto Condensed",sans-serif}.store-credit,.cart-link a span,table thead tr th,table tfoot tr td,.step-number,input[type="text"],input[type="password"],input[type="date"],input[type="datetime"],input[type="email"],input[type="number"],input[type="search"],input[type="tel"],input[type="time"],input[type="url"],textarea,p,p.intro,blockquote,.ProductDetails,.on-sale-badge,.subcat-grid li a,.inline-list.subcategory-list a,.orbit,.orbit .slide-text,footer.main a,.account.page p,.account.page li,.orbit .slide-text{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.page .product-grid li:nth-child(n){margin-right:1%}.page .product-grid li:nth-child(n){clear:none}@media only screen and (min-width:769px){.page .product-grid li,.page .product-grid li .ProductImage a{width:24.25%}.page .product-grid li:nth-child(4n+4){margin-right:0}.page .product-grid li:nth-child(4n+1){clear:left}.sidebar.page .product-grid li,.sidebar.page .product-grid li .ProductImage a{width:32.666666666666664%}.sidebar.page .product-grid li:nth-child(4n+4){margin-right:1%}.sidebar.page .product-grid li:nth-child(4n+1){clear:none}.sidebar.page .product-grid li:nth-child(3n+3){margin-right:0}.sidebar.page .product-grid li:nth-child(3n+1){clear:left}}@media only screen and (max-width:768px) and (min-width:481px){.responsive .page .product-grid li,.responsive .page .product-grid li .ProductImage a{width:24.25%}.responsive .page .product-grid li:nth-child(4n+4){margin-right:0}.responsive .page .product-grid li:nth-child(4n+1){clear:left}.responsive .sidebar.page .product-grid li,.responsive .sidebar.page .product-grid li .ProductImage a{width:49.5%}.responsive .sidebar.page .product-grid li:nth-child(4n+4){margin-right:1%}.responsive .sidebar.page .product-grid li:nth-child(4n+1){clear:none}.responsive .sidebar.page .product-grid li:nth-child(2n+2){margin-right:0}.responsive .sidebar.page .product-grid li:nth-child(2n+1){clear:left}}@media only screen and (max-width:480px){.responsive .page .product-grid li,.responsive .page .product-grid li .ProductImage a,.responsive .sidebar.page .product-grid li,.responsive .sidebar.page .product-grid li .ProductImage a{width:49.5%}.responsive .product-grid li:nth-child(2n+2),.responsive .sidebar.page .product-grid li:nth-child(2n+2){margin-right:0}.responsive .product-grid li:nth-child(2n+1),.responsive .sidebar.page .product-grid li:nth-child(2n+1){clear:left}}
\ No newline at end of file
diff --git a/template/__gift_themes/Birthday.html b/template/__gift_themes/Birthday.html
new file mode 100644
index 0000000..776e998
--- /dev/null
+++ b/template/__gift_themes/Birthday.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=%%GLOBAL_CharacterSet%%" />
+	<style type="text/css">
+	body, td {
+		font-family: Arial, Helvetica, sans-serif;
+		font-size: 12px;
+		color: #000;
+	}
+
+	.GiftCertificate {
+		border: 1px solid #ddd;
+		width: 560px;
+		border-collapse: collapse;
+		margin: auto;
+		background: url('%%GLOBAL_SHARED_GIFT_THEME_PATH%%/Birthday.background.gif') right bottom no-repeat;
+	}
+
+	.GiftCertificateHeader {
+		background: #ED9A3F;
+		color: #fff;
+		padding: 4px;
+	}
+
+	.GiftIntro {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+	.GiftCertificateCode {
+		float: right;
+		text-align: right;
+		width: 200px;
+		font-size: 14px;
+	}
+
+	#GiftCertificateCode {
+		font-weight: bold;
+	}
+
+	.GiftCertificateBody, .GiftCertificateDetails, .GiftCertificateMessage, .GiftCertificateShopNow {
+		padding: 10px;
+	}
+
+	.GiftCertificateMessage, .GiftCertificateShopNow {
+		padding-top: 0;
+	}
+
+	.GiftCertificateBody {
+		height: 80px;
+	}
+
+	.StoreInfo, .StoreInfo a, h1, h1 a {
+		color: #000;
+		margin: 0;
+		padding: 0;
+		text-decoration: none;
+	}
+
+	h1 {
+		font-size: 38px; letter-spacing: -2px; font-weight: normal; margin: 0px; font-family:  font, Helvetica, Arial, sans-serif;
+	}
+
+	#GiftCertificateAmount {
+		font-weight: bold;
+		float: right;
+		font-size: 40px;
+	}
+
+	.GiftCertificateFrom {
+	float: right;
+	text-align: right;
+	}
+
+	#GiftCertificateTo, #GiftCertificateFrom {
+		font-weight: bold;
+	}
+
+	.GiftCertificateShopNow {
+		text-align: right;
+		padding-bottom: 5px;
+		padding-top: 5px;
+		background: #ED9A3F;
+		color: #fff;
+		font-weight: bold
+	}
+
+	.GiftCertificateShopNow a {
+		color: #fff;
+		font-weight: normal;
+	}
+
+	.GiftCertificateExpiry {
+		float: left;
+		font-size: 11px;
+		font-weight: normal;
+	}
+	</style>
+</head>
+<body>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateHeader">
+				<div class="GiftCertificateCode">%%LNG_CertificateCode%%:
+					<span id="GiftCertificateCode">%%GLOBAL_GiftCertificateCode%%</span>
+				</div>
+				<div class="GiftIntro">%%LNG_GiftCertificate%%</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateBody">
+				<div id="GiftCertificateAmount">%%GLOBAL_GiftCertificateAmount%%</div>
+				<div class="StoreInfo">
+					%%GLOBAL_HeaderLogo%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateDetails">
+				<div class="GiftCertificateFrom">
+					%%LNG_CertificateFrom%%:
+					<span id="GiftCertificateFrom">%%GLOBAL_GiftCertificateFrom%%</span>
+				</div>
+				<div class="GiftCertificateTo">
+					%%LNG_CertificateTo%%:
+					<span id="GiftCertificateTo">%%GLOBAL_GiftCertificateTo%%</span>
+				</div>
+			</td>
+		<tr>
+		<tr>
+			<td class="GiftCertificateMessage">
+				<div id="GiftCertificateMessage">
+				%%GLOBAL_GiftCertificateMessage%%
+				</div>
+			</td>
+		</tr>
+	</table>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateShopNow">
+				<div class="GiftCertificateExpiry">%%GLOBAL_GiftCertificateExpiryInfo%%</div>
+				%%LNG_RedeemGiftCertificateAt%% <a href="%%GLOBAL_ShopPath%%/">%%GLOBAL_ShopPath%%/</a>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
diff --git a/template/__gift_themes/Boy.html b/template/__gift_themes/Boy.html
new file mode 100644
index 0000000..e738b82
--- /dev/null
+++ b/template/__gift_themes/Boy.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=%%GLOBAL_CharacterSet%%" />
+	<style type="text/css">
+	body, td {
+		font-family: Arial, Helvetica, sans-serif;
+		font-size: 12px;
+		color: #000;
+	}
+
+	.GiftCertificate {
+		border: 1px solid #ddd;
+		width: 560px;
+		border-collapse: collapse;
+		margin: auto;
+		background: url('%%GLOBAL_SHARED_GIFT_THEME_PATH%%/Boy.background.gif') right 30px no-repeat;
+	}
+
+	.GiftCertificateHeader {
+		background: #000;
+		color: #fff;
+		padding: 4px;
+	}
+
+	.GiftIntro {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+	.GiftCertificateCode {
+		float: right;
+		text-align: right;
+		width: 200px;
+		font-size: 14px;
+	}
+
+	#GiftCertificateCode {
+		font-weight: bold;
+	}
+
+	.GiftCertificateBody, .GiftCertificateDetails, .GiftCertificateMessage, .GiftCertificateShopNow {
+		padding: 10px;
+	}
+
+	.GiftCertificateMessage, .GiftCertificateShopNow {
+		padding-top: 0;
+	}
+
+	.GiftCertificateBody {
+		height: 80px;
+	}
+
+	.StoreInfo, .StoreInfo a, h1, h1 a {
+		color: #000;
+		margin: 0;
+		padding: 0;
+		text-decoration: none;
+	}
+
+	h1 {
+		font-size: 38px; letter-spacing: -2px; font-weight: normal; margin: 0px; font-family:  font, Helvetica, Arial, sans-serif;
+	}
+
+	#GiftCertificateAmount {
+		font-weight: bold;
+		float: right;
+		font-size: 40px;
+	}
+
+	.GiftCertificateFrom {
+	float: right;
+	text-align: right;
+	}
+
+	#GiftCertificateTo, #GiftCertificateFrom {
+		font-weight: bold;
+	}
+
+	.GiftCertificateShopNow {
+		text-align: right;
+		padding-bottom: 5px;
+		padding-top: 5px;
+		background: #000;
+		color: #fff;
+		font-weight: bold
+	}
+
+	.GiftCertificateShopNow a {
+		color: #fff;
+		font-weight: normal;
+	}
+
+	.GiftCertificateExpiry {
+		float: left;
+		font-size: 11px;
+		font-weight: normal;
+	}
+	</style>
+</head>
+<body>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateHeader">
+				<div class="GiftCertificateCode">%%LNG_CertificateCode%%:
+					<span id="GiftCertificateCode">%%GLOBAL_GiftCertificateCode%%</span>
+				</div>
+				<div class="GiftIntro">%%LNG_GiftCertificate%%</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateBody">
+				<div id="GiftCertificateAmount">%%GLOBAL_GiftCertificateAmount%%</div>
+				<div class="StoreInfo">
+					%%GLOBAL_HeaderLogo%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateDetails">
+				<div class="GiftCertificateFrom">
+					%%LNG_CertificateFrom%%:
+					<span id="GiftCertificateFrom">%%GLOBAL_GiftCertificateFrom%%</span>
+				</div>
+				<div class="GiftCertificateTo">
+					%%LNG_CertificateTo%%:
+					<span id="GiftCertificateTo">%%GLOBAL_GiftCertificateTo%%</span>
+				</div>
+			</td>
+		<tr>
+		<tr>
+			<td class="GiftCertificateMessage">
+				<div id="GiftCertificateMessage">
+				%%GLOBAL_GiftCertificateMessage%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateShopNow">
+				<div class="GiftCertificateExpiry">%%GLOBAL_GiftCertificateExpiryInfo%%</div>
+				%%LNG_RedeemGiftCertificateAt%% <a href="%%GLOBAL_ShopPath%%/">%%GLOBAL_ShopPath%%/</a>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
diff --git a/template/__gift_themes/Celebration.html b/template/__gift_themes/Celebration.html
new file mode 100644
index 0000000..61b2034
--- /dev/null
+++ b/template/__gift_themes/Celebration.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+	<meta http-equiv="Content-Type" content="text/html; charset=%%GLOBAL_CharacterSet%%" />
+	<style type="text/css">
+	body, td {
+		font-family: Arial, Helvetica, sans-serif;
+		font-size: 12px;
+		color: #000;
+	}
+
+	.GiftCertificate {
+		border: 1px solid #ddd;
+		width: 560px;
+		border-collapse: collapse;
+		margin: auto;
+		background: url('%%GLOBAL_SHARED_GIFT_THEME_PATH%%/Celebration.background.gif') right 0 no-repeat;
+	}
+
+	.GiftCertificateHeader {
+		background: #FAB11D;
+		color: #fff;
+		padding: 4px;
+	}
+
+	.GiftIntro {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+	.GiftCertificateCode {
+		float: right;
+		text-align: right;
+		width: 200px;
+		font-size: 14px;
+	}
+
+	#GiftCertificateCode {
+		font-weight: bold;
+	}
+
+	.GiftCertificateBody, .GiftCertificateDetails, .GiftCertificateMessage, .GiftCertificateShopNow {
+		padding: 10px;
+	}
+
+	.GiftCertificateMessage, .GiftCertificateShopNow {
+		padding-top: 0;
+	}
+
+	.GiftCertificateBody {
+		height: 80px;
+	}
+
+	.StoreInfo, .StoreInfo a, h1, h1 a {
+		color: #000;
+		margin: 0;
+		padding: 0;
+		text-decoration: none;
+	}
+
+	h1 {
+		font-size: 38px; letter-spacing: -2px; font-weight: normal; margin: 0px; font-family:  font, Helvetica, Arial, sans-serif;
+	}
+
+	#GiftCertificateAmount {
+		font-weight: bold;
+		float: right;
+		font-size: 40px;
+	}
+
+	.GiftCertificateFrom {
+	float: right;
+	text-align: right;
+	}
+
+	#GiftCertificateTo, #GiftCertificateFrom {
+		font-weight: bold;
+	}
+
+	.GiftCertificateShopNow {
+		text-align: right;
+		padding-bottom: 5px;
+		padding-top: 5px;
+		background: #FAB11D;
+		color: #fff;
+		font-weight: bold
+	}
+
+	.GiftCertificateShopNow a {
+		color: #fff;
+		font-weight: normal;
+	}
+
+	.GiftCertificateExpiry {
+		float: left;
+		font-size: 11px;
+		font-weight: normal;
+	}
+	</style>
+</head>
+<body>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateHeader">
+				<div class="GiftCertificateCode">%%LNG_CertificateCode%%:
+					<span id="GiftCertificateCode">%%GLOBAL_GiftCertificateCode%%</span>
+				</div>
+				<div class="GiftIntro">%%LNG_GiftCertificate%%</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateBody">
+				<div id="GiftCertificateAmount">%%GLOBAL_GiftCertificateAmount%%</div>
+				<div class="StoreInfo">
+					%%GLOBAL_HeaderLogo%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateDetails">
+				<div class="GiftCertificateFrom">
+					%%LNG_CertificateFrom%%:
+					<span id="GiftCertificateFrom">%%GLOBAL_GiftCertificateFrom%%</span>
+				</div>
+				<div class="GiftCertificateTo">
+					%%LNG_CertificateTo%%:
+					<span id="GiftCertificateTo">%%GLOBAL_GiftCertificateTo%%</span>
+				</div>
+			</td>
+		<tr>
+		<tr>
+			<td class="GiftCertificateMessage">
+				<div id="GiftCertificateMessage">
+				%%GLOBAL_GiftCertificateMessage%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateShopNow">
+				<div class="GiftCertificateExpiry">%%GLOBAL_GiftCertificateExpiryInfo%%</div>
+				%%LNG_RedeemGiftCertificateAt%% <a href="%%GLOBAL_ShopPath%%/">%%GLOBAL_ShopPath%%/</a>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
diff --git a/template/__gift_themes/Christmas.html b/template/__gift_themes/Christmas.html
new file mode 100644
index 0000000..24e3892
--- /dev/null
+++ b/template/__gift_themes/Christmas.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=%%GLOBAL_CharacterSet%%" />
+	<style type="text/css">
+	body, td {
+		font-family: Arial, Helvetica, sans-serif;
+		font-size: 12px;
+		color: #000;
+	}
+
+	.GiftCertificate {
+		border: 1px solid #ddd;
+		width: 560px;
+		border-collapse: collapse;
+		margin: auto;
+		background: url('%%GLOBAL_SHARED_GIFT_THEME_PATH%%/Christmas.background.gif') right 0 no-repeat;
+	}
+
+	.GiftCertificateHeader {
+		background: #B91E1E;
+		color: #fff;
+		padding: 4px;
+	}
+
+	.GiftIntro {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+	.GiftCertificateCode {
+		float: right;
+		text-align: right;
+		width: 200px;
+		font-size: 14px;
+	}
+
+	#GiftCertificateCode {
+		font-weight: bold;
+	}
+
+	.GiftCertificateBody, .GiftCertificateDetails, .GiftCertificateMessage, .GiftCertificateShopNow {
+		padding: 10px;
+	}
+
+	.GiftCertificateMessage, .GiftCertificateShopNow {
+		padding-top: 0;
+	}
+
+	.GiftCertificateBody {
+		height: 80px;
+	}
+
+	.StoreInfo, .StoreInfo a, h1, h1 a {
+		color: #000;
+		margin: 0;
+		padding: 0;
+		text-decoration: none;
+	}
+
+	h1 {
+		font-size: 38px; letter-spacing: -2px; font-weight: normal; margin: 0px; font-family:  font, Helvetica, Arial, sans-serif;
+	}
+
+	#GiftCertificateAmount {
+		font-weight: bold;
+		float: right;
+		font-size: 40px;
+	}
+
+	.GiftCertificateFrom {
+	float: right;
+	text-align: right;
+	}
+
+	#GiftCertificateTo, #GiftCertificateFrom {
+		font-weight: bold;
+	}
+
+	.GiftCertificateShopNow {
+		text-align: right;
+		padding-bottom: 5px;
+		padding-top: 5px;
+		background: #217625;
+		color: #fff;
+		font-weight: bold
+	}
+
+	.GiftCertificateShopNow a {
+		color: #fff;
+		font-weight: normal;
+	}
+
+	.GiftCertificateExpiry {
+		float: left;
+		font-size: 11px;
+		font-weight: normal;
+	}
+	</style>
+</head>
+<body>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateHeader">
+				<div class="GiftCertificateCode">%%LNG_CertificateCode%%:
+					<span id="GiftCertificateCode">%%GLOBAL_GiftCertificateCode%%</span>
+				</div>
+				<div class="GiftIntro">%%LNG_GiftCertificate%%</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateBody">
+				<div id="GiftCertificateAmount">%%GLOBAL_GiftCertificateAmount%%</div>
+				<div class="StoreInfo">
+					%%GLOBAL_HeaderLogo%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateDetails">
+				<div class="GiftCertificateFrom">
+					%%LNG_CertificateFrom%%:
+					<span id="GiftCertificateFrom">%%GLOBAL_GiftCertificateFrom%%</span>
+				</div>
+				<div class="GiftCertificateTo">
+					%%LNG_CertificateTo%%:
+					<span id="GiftCertificateTo">%%GLOBAL_GiftCertificateTo%%</span>
+				</div>
+			</td>
+		<tr>
+		<tr>
+			<td class="GiftCertificateMessage">
+				<div id="GiftCertificateMessage">
+				%%GLOBAL_GiftCertificateMessage%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateShopNow">
+				<div class="GiftCertificateExpiry">%%GLOBAL_GiftCertificateExpiryInfo%%</div>
+				%%LNG_RedeemGiftCertificateAt%% <a href="%%GLOBAL_ShopPath%%/">%%GLOBAL_ShopPath%%/</a>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
diff --git a/template/__gift_themes/General.html b/template/__gift_themes/General.html
new file mode 100644
index 0000000..443169e
--- /dev/null
+++ b/template/__gift_themes/General.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=%%GLOBAL_CharacterSet%%" />
+	<style type="text/css">
+	body, td {
+		font-family: Arial, Helvetica, sans-serif;
+		font-size: 12px;
+		color: #000;
+	}
+
+	.GiftCertificate {
+		border: 1px solid #ddd;
+		width: 560px;
+		border-collapse: collapse;
+		margin: auto;
+		background: url('%%GLOBAL_SHARED_GIFT_THEME_PATH%%/General.background.gif') right no-repeat;
+	}
+
+	.GiftCertificateHeader {
+		background: #E6F4FF;
+		padding: 4px;
+	}
+
+	.GiftIntro {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+	.GiftCertificateCode {
+		float: right;
+		text-align: right;
+		width: 200px;
+		font-size: 14px;
+	}
+
+	#GiftCertificateCode {
+		font-weight: bold;
+	}
+
+	.GiftCertificateBody, .GiftCertificateDetails, .GiftCertificateMessage, .GiftCertificateShopNow {
+		padding: 10px;
+	}
+
+	.GiftCertificateMessage, .GiftCertificateShopNow {
+		padding-top: 0;
+	}
+
+	.GiftCertificateBody {
+		height: 80px;
+	}
+
+	.StoreInfo, .StoreInfo a, h1, h1 a {
+		color: #000;
+		margin: 0;
+		padding: 0;
+		text-decoration: none;
+	}
+
+	h1 {
+		font-size: 38px; letter-spacing: -2px; font-weight: normal; margin: 0px; font-family:  font, Helvetica, Arial, sans-serif;
+	}
+
+	#GiftCertificateAmount {
+		font-weight: bold;
+		float: right;
+		font-size: 40px;
+	}
+
+	.GiftCertificateFrom {
+	float: right;
+	text-align: right;
+	}
+
+	#GiftCertificateTo, #GiftCertificateFrom {
+		font-weight: bold;
+	}
+
+	.GiftCertificateShopNow {
+		text-align: right;
+		padding-bottom: 5px;
+		padding-top: 5px;
+		background: #E6F4FF;
+		font-weight: bold
+	}
+
+	.GiftCertificateShopNow a {
+		color: #000;
+		font-weight: normal;
+	}
+
+	.GiftCertificateExpiry {
+		float: left;
+		font-size: 11px;
+		font-weight: normal;
+	}
+	</style>
+</head>
+<body>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateHeader">
+				<div class="GiftCertificateCode">%%LNG_CertificateCode%%:
+					<span id="GiftCertificateCode">%%GLOBAL_GiftCertificateCode%%</span>
+				</div>
+				<div class="GiftIntro">%%LNG_GiftCertificate%%</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateBody">
+				<div id="GiftCertificateAmount">%%GLOBAL_GiftCertificateAmount%%</div>
+				<div class="StoreInfo">
+					%%GLOBAL_HeaderLogo%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateDetails">
+				<div class="GiftCertificateFrom">
+					%%LNG_CertificateFrom%%:
+					<span id="GiftCertificateFrom">%%GLOBAL_GiftCertificateFrom%%</span>
+				</div>
+				<div class="GiftCertificateTo">
+					%%LNG_CertificateTo%%:
+					<span id="GiftCertificateTo">%%GLOBAL_GiftCertificateTo%%</span>
+				</div>
+			</td>
+		<tr>
+		<tr>
+			<td class="GiftCertificateMessage">
+				<div id="GiftCertificateMessage">
+				%%GLOBAL_GiftCertificateMessage%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateShopNow">
+				<div class="GiftCertificateExpiry">%%GLOBAL_GiftCertificateExpiryInfo%%</div>
+				%%LNG_RedeemGiftCertificateAt%% <a href="%%GLOBAL_ShopPath%%/">%%GLOBAL_ShopPath%%/</a>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
diff --git a/template/__gift_themes/Girl.html b/template/__gift_themes/Girl.html
new file mode 100644
index 0000000..4f961fb
--- /dev/null
+++ b/template/__gift_themes/Girl.html
@@ -0,0 +1,148 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=%%GLOBAL_CharacterSet%%" />
+	<style type="text/css">
+	body, td {
+		font-family: Arial, Helvetica, sans-serif;
+		font-size: 12px;
+		color: #000;
+	}
+
+	.GiftCertificate {
+		border: 1px solid #ddd;
+		width: 560px;
+		border-collapse: collapse;
+		margin: auto;
+		background: url('%%GLOBAL_SHARED_GIFT_THEME_PATH%%/Girl.background.gif') right bottom no-repeat;
+	}
+
+	.GiftCertificateHeader {
+		background: #FF59AC;
+		color: #fff;
+		padding: 4px;
+	}
+
+	.GiftIntro {
+		font-size: 16px;
+		font-weight: bold;
+	}
+
+	.GiftCertificateCode {
+		float: right;
+		text-align: right;
+		width: 200px;
+		font-size: 14px;
+	}
+
+	#GiftCertificateCode {
+		font-weight: bold;
+	}
+
+	.GiftCertificateBody, .GiftCertificateDetails, .GiftCertificateMessage, .GiftCertificateShopNow {
+		padding: 10px;
+	}
+
+	.GiftCertificateMessage, .GiftCertificateShopNow {
+		padding-top: 0;
+	}
+
+	.GiftCertificateBody {
+		height: 80px;
+	}
+
+	.StoreInfo, .StoreInfo a, h1, h1 a {
+		color: #000;
+		margin: 0;
+		padding: 0;
+		text-decoration: none;
+	}
+
+	h1 {
+		font-size: 38px; letter-spacing: -2px; font-weight: normal; margin: 0px; font-family:  font, Helvetica, Arial, sans-serif;
+	}
+
+	#GiftCertificateAmount {
+		font-weight: bold;
+		float: right;
+		font-size: 40px;
+	}
+
+	.GiftCertificateFrom {
+	float: right;
+	text-align: right;
+	}
+
+	#GiftCertificateTo, #GiftCertificateFrom {
+		font-weight: bold;
+	}
+
+	.GiftCertificateShopNow {
+		text-align: right;
+		padding-bottom: 5px;
+		padding-top: 5px;
+		background: #FF59AC;
+		color: #fff;
+		font-weight: bold
+	}
+
+	.GiftCertificateShopNow a {
+		color: #fff;
+		font-weight: normal;
+	}
+
+	.GiftCertificateExpiry {
+		float: left;
+		font-size: 11px;
+		font-weight: normal;
+	}
+	</style>
+</head>
+<body>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateHeader">
+				<div class="GiftCertificateCode">%%LNG_CertificateCode%%:
+					<span id="GiftCertificateCode">%%GLOBAL_GiftCertificateCode%%</span>
+				</div>
+				<div class="GiftIntro">%%LNG_GiftCertificate%%</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateBody">
+				<div id="GiftCertificateAmount">%%GLOBAL_GiftCertificateAmount%%</div>
+				<div class="StoreInfo">
+					%%GLOBAL_HeaderLogo%%
+				</div>
+			</td>
+		</tr>
+		<tr>
+			<td class="GiftCertificateDetails">
+				<div class="GiftCertificateFrom">
+					%%LNG_CertificateFrom%%:
+					<span id="GiftCertificateFrom">%%GLOBAL_GiftCertificateFrom%%</span>
+				</div>
+				<div class="GiftCertificateTo">
+					%%LNG_CertificateTo%%:
+					<span id="GiftCertificateTo">%%GLOBAL_GiftCertificateTo%%</span>
+				</div>
+			</td>
+		<tr>
+		<tr>
+			<td class="GiftCertificateMessage">
+				<div id="GiftCertificateMessage">
+				%%GLOBAL_GiftCertificateMessage%%
+				</div>
+			</td>
+		</tr>
+	</table>
+	<table class="GiftCertificate">
+		<tr>
+			<td class="GiftCertificateShopNow">
+				<div class="GiftCertificateExpiry">%%GLOBAL_GiftCertificateExpiryInfo%%</div>
+				%%LNG_RedeemGiftCertificateAt%% <a href="%%GLOBAL_ShopPath%%/">%%GLOBAL_ShopPath%%/</a>
+			</td>
+		</tr>
+	</table>
+</body>
+</html>
diff --git a/template/_size guide.txt b/template/_size guide.txt
new file mode 100644
index 0000000..5b74f05
--- /dev/null
+++ b/template/_size guide.txt	
@@ -0,0 +1,12 @@
+
+Recommended logo image size:
+250px wide x 100px high
+
+Recommended storewide product thumbnail size:
+230px wide x 260px high
+
+Recommended top banner size:
+980px wide x Any height
+
+Recommended bottom banner size:
+580px wide x Any height
\ No newline at end of file
diff --git a/template/_version.txt b/template/_version.txt
new file mode 100644
index 0000000..019e87e
--- /dev/null
+++ b/template/_version.txt
@@ -0,0 +1 @@
+Athletic v1.53
\ No newline at end of file
diff --git a/template/account.html b/template/account.html
old mode 100755
new mode 100644
diff --git a/template/account_addressbook.html b/template/account_addressbook.html
old mode 100755
new mode 100644
diff --git a/template/account_downloaditem.html b/template/account_downloaditem.html
old mode 100755
new mode 100644
diff --git a/template/account_inbox.html b/template/account_inbox.html
old mode 100755
new mode 100644
diff --git a/template/account_new_return.html b/template/account_new_return.html
old mode 100755
new mode 100644
diff --git a/template/account_order.html b/template/account_order.html
old mode 100755
new mode 100644
diff --git a/template/account_orders.html b/template/account_orders.html
old mode 100755
new mode 100644
diff --git a/template/account_orderstatus.html b/template/account_orderstatus.html
old mode 100755
new mode 100644
diff --git a/template/account_recentitems.html b/template/account_recentitems.html
old mode 100755
new mode 100644
diff --git a/template/account_returns.html b/template/account_returns.html
old mode 100755
new mode 100644
diff --git a/template/account_saved_return.html b/template/account_saved_return.html
old mode 100755
new mode 100644
diff --git a/template/authorizenet.html b/template/authorizenet.html
new file mode 100644
index 0000000..a3e27a2
--- /dev/null
+++ b/template/authorizenet.html
@@ -0,0 +1,49 @@
+<p class="InfoMessage Message">
+	%%LNG_AuthorizeNetPaymentIntro%%
+</p>
+<p class="ErrorMessage Message" style="display:%%GLOBAL_HideAuthorizeNetError%%">
+	%%LNG_AuthorizeNetProcessingError%%<br />
+	<strong>%%GLOBAL_AuthorizeNetErrorMessage%%</strong>
+</p>
+<form action="%%GLOBAL_ShopPathSSL%%/checkout.php?action=process_payment" method="post" onsubmit="return check_authorizenet_payment_form()">
+	<div class="FormContainer HorizontalFormContainer">
+		<dl>
+			<dt><span class="Required">*</span> %%LNG_AuthorizeNetCardHoldersName%%:</dt>
+			<dd><input type="text" name="AuthorizeNet_name" id="AuthorizeNet_name" value="%%GLOBAL_AuthorizeNetName%%" size="30" /></dd>
+
+			<dt><span class="Required">*</span> %%LNG_AuthorizeNetCreditCardNo%%:</dt>
+			<dd>
+				<input type="text" name="AuthorizeNet_ccno" id="AuthorizeNet_ccno" value="%%GLOBAL_AuthorizeNetNum%%" size="30" />
+				<br />
+				<small>%%LNG_AuthorizeNetCreditCardNoHelp%%</small>
+			</dd>
+
+			<dt><span class="Required">*</span> %%LNG_AuthorizeNetExpirationDate%%:</dt>
+			<dd>
+				<select name="AuthorizeNet_ccexpm" id="AuthorizeNet_ccexpm">
+					<option value=""></option>
+					%%GLOBAL_AuthorizeNetMonths%%
+				</select>
+				<select name="AuthorizeNet_ccexpy" id="AuthorizeNet_ccexpy">
+					<option value=""></option>
+					%%GLOBAL_AuthorizeNetYears%%
+				</select>
+			</dd>
+
+			<dt style="display: %%GLOBAL_AuthorizeNetHideCVV2%%"><span class="Required">*</span> %%LNG_AuthorizeNetCreditCardCCV2%%:</dt>
+			<dd id="CVV2Input" style="display: %%GLOBAL_AuthorizeNetHideCVV2%%">
+				<input type="text" class="Textbox" name="AuthorizeNet_cccode" id="cc_cvv2" value="%%GLOBAL_AuthorizeNetCCV2%%" size="4" />
+				&nbsp;<small><a href="#" id="CVV2Help">%%LNG_WhatsThis%%</a></small>
+			</dd>
+
+			<dt>&nbsp;&nbsp; %%LNG_AuthorizeNetTotalAmount%%:</dt>
+			<dd>
+				<em class="ProductPrice">%%GLOBAL_OrderAmount%%</em>
+			</dd>
+		</dl>
+		<p class="Submit">
+			<input type="submit" value="%%LNG_AuthorizeNetPayForOrder%%" />
+		</p>
+	</div>
+</form>
+%%Panel.AuthorizeNetPaymentJavaScript%%
\ No newline at end of file
diff --git a/template/blog.html b/template/blog.html
old mode 100755
new mode 100644
index 219d6cf..b454e99
--- a/template/blog.html
+++ b/template/blog.html
@@ -4,6 +4,7 @@
 
 <section class="main">
   %%Panel.MainGridTop%%
+  %%Panel.NewsBreadcrumb%%
     <h1>%%GLOBAL_BlogName%%</h1>
     %%SNIPPET_RecentPostsContent%%
     
diff --git a/template/blog_post.html b/template/blog_post.html
old mode 100755
new mode 100644
diff --git a/template/bottom.html b/template/bottom.html
old mode 100755
new mode 100644
diff --git a/template/brands.html b/template/brands.html
old mode 100755
new mode 100644
diff --git a/template/brands_with_facets.html b/template/brands_with_facets.html
new file mode 100644
index 0000000..222afb2
--- /dev/null
+++ b/template/brands_with_facets.html
@@ -0,0 +1,28 @@
+%%Panel.HTMLHead%%
+<body class="brands facets page sidebar">
+%%Panel.Header%%
+	
+<section class="main">
+	<div class="row">
+		<div class="twelve columns">
+			%%Panel.BrandBreadcrumb%%		
+			<div>
+				%%Banner.TopBanner%%
+			</div>
+		</div>
+	</div>
+
+	%%Panel.MainGridTopFacets%%
+		%%Panel.BrandContent%%
+		%%Banner.BottomBanner%%
+	%%Panel.MainGridBottomFacets%%
+</section>
+
+%%Panel.Footer%%
+
+<!-- brands page scripts -->
+<script>
+	lang.CompareSelectMessage = '%%LNG_CompareSelectMessage%%';
+</script>
+
+%%Panel.HTMLFoot%%
\ No newline at end of file
diff --git a/template/cart.html b/template/cart.html
old mode 100755
new mode 100644
diff --git a/template/category.html b/template/category.html
old mode 100755
new mode 100644
index 98d796e..24a98f0
--- a/template/category.html
+++ b/template/category.html
@@ -9,7 +9,7 @@
 		%%Panel.CategoryHeading%%
 		
 		<div class="row">%%SNIPPET_CategorySortBox%%</div>
-		<div class="row"><div class="four columns mobile-four push-eight">%%Panel.CategoryPagingTop%%</div>
+		<div class="row"><div class="four columns mobile-four push-eight">%%Panel.CategoryPagingTop%%</div></div>
 		
 		%%Panel.CategoryContent%%
 		%%Panel.CategoryPagingBottom%%
diff --git a/template/category_with_facets.html b/template/category_with_facets.html
new file mode 100644
index 0000000..8a1026c
--- /dev/null
+++ b/template/category_with_facets.html
@@ -0,0 +1,35 @@
+%%Panel.HTMLHead%%
+<body class="category facets page sidebar">
+%%Panel.Header%%
+	
+<section class="main">
+	<div class="row">
+		<div class="twelve columns">
+			%%Panel.CategoryBreadcrumb%%
+			%%Panel.CategoryHeading%%
+		</div>
+	</div>
+
+	%%Panel.MainGridTopFacets%%
+		
+		<div class="row">%%SNIPPET_CategorySortBox%%</div>
+		<div class="row"><div class="six columns mobile-four push-six">%%Panel.CategoryPagingTop%%</div></div>
+		
+		%%Panel.CategoryContent%%
+		%%Panel.CategoryPagingBottom%%
+		
+		%%Banner.BottomBanner%%
+		
+	%%Panel.MainGridBottomFacets%%
+</section>
+
+%%Panel.Footer%%
+
+<!-- category page scripts -->
+<script>
+	lang.CompareSelectMessage = '%%LNG_CompareSelectMessage%%';
+	lang.PleaseSelectAProduct = '%%LNG_PleaseSelectAProduct%%';
+	config.CompareLink = '%%GLOBAL_CompareLink%%';
+</script>
+
+%%Panel.HTMLFoot%%
\ No newline at end of file
diff --git a/template/ccmanual.html b/template/ccmanual.html
new file mode 100644
index 0000000..c985471
--- /dev/null
+++ b/template/ccmanual.html
@@ -0,0 +1,78 @@
+<p class="InfoMessage Message">
+	%%LNG_CCManualPaymentIntro%%
+</p>
+
+<p class="ErrorMessage Message" style="display: %%GLOBAL_HideCCManualError%%">
+	%%GLOBAL_CCErrorMessage%%
+</p>
+
+<form action="%%GLOBAL_ShopPathSSL%%/checkout.php?action=process_payment" method="post" onsubmit="return check_cc_payment_form()">
+	<div class="FormContainer HorizontalFormContainer">
+		<dl>
+			<dt><span class="Required">*</span> %%LNG_CCManualCardHoldersName%%:</dt>
+			<dd><input type="text" class="Textbox" name="cc_name" id="cc_name" value="%%GLOBAL_CCName%%" size="30" /></dd>
+
+			<dt><span class="Required">*</span> %%LNG_CCManualCreditCardType%%:</dt>
+			<dd>
+				<select name="cc_cctype" id="cc_cctype" style="width:175px" onchange="updateCreditCardType()">
+					<option value="">%%LNG_CCManualPleaseChoose%%</option>
+					%%GLOBAL_CCTypes%%
+				</select>
+			</dd>
+
+			<dt><span class="Required">*</span> %%LNG_CCManualCreditCardNo%%:</dt>
+			<dd>
+				<input type="text" class="Textbox" name="cc_ccno" id="cc_ccno" value="%%GLOBAL_CCNum%%" size="30" />
+				<br />
+				<small>%%LNG_CCManualCreditCardNoHelp%%</small>
+			</dd>
+
+			<dt class="CVV2Input"><span class="Required">*</span> %%LNG_CCManualCreditCardCCV2%%:</dt>
+			<dd class="CVV2Input">
+				<input type="text" class="Textbox" name="cc_cvv2" id="cc_cvv2" value="%%GLOBAL_CCCVV2%%" size="4" />
+				<br />
+				<small>%%LNG_CCManualCreditCardCVV2Help%%</small>
+			</dd>
+
+			<dt class="CCIssueNo"><span class="Required">&nbsp;</span> %%LNG_CCManualCreditCardIssueNo%%:</dt>
+			<dd class="CCIssueNo">
+				<input type="text" class="Textbox" name="cc_issueno" id="cc_issueno" value="%%GLOBAL_CCIssueNo%%" size="4" />
+				<br />
+				<small>%%LNG_CCManualCreditCardIssueNoHelp%%</small>
+			</dd>
+
+			<dt><span class="Required">*</span> %%LNG_CCManualExpirationDate%%:</dt>
+			<dd>
+				<select name="cc_ccexpm" id="cc_ccexpm">
+					<option value=""></option>
+					%%GLOBAL_CCMonths%%
+				</select>
+				<select name="cc_ccexpy" id="cc_ccexpy">
+					<option value=""></option>
+					%%GLOBAL_CCYears%%
+				</select>
+			</dd>
+
+			<dt class="CCIssueDate"><span class="Required">&nbsp;</span> %%LNG_CCManualIssueDate%%:</dt>
+			<dd class="CCIssueDate">
+				<select name="cc_issuedatem" id="cc_issuedatem">
+					<option value=""></option>
+					%%GLOBAL_CCIssueDateMonths%%
+				</select>
+				<select name="cc_issuedatey" id="cc_issuedatey">
+					<option value=""></option>
+					%%GLOBAL_CCIssueDateYears%%
+				</select>
+				<br />
+				<small>%%LNG_CCManualIssueDateHelp%%</small>
+			</dd>
+
+			<dt>&nbsp;&nbsp; %%LNG_CCManualTotalAmount%%:</dt>
+			<dd><em class="ProductPrice">%%GLOBAL_OrderAmount%%</em></dd>
+		</dl>
+		<p class="Submit">
+			<input type="submit" value="%%LNG_CCManualPayForOrder%%" />
+		</p>
+	</div>
+</form>
+%%Panel.CCManualPaymentJavaScript%%
\ No newline at end of file
diff --git a/template/checkout.html b/template/checkout.html
old mode 100755
new mode 100644
diff --git a/template/checkout_address.html b/template/checkout_address.html
old mode 100755
new mode 100644
index 1b28dfb..ba1066c
--- a/template/checkout_address.html
+++ b/template/checkout_address.html
@@ -13,6 +13,6 @@
 %%Panel.Footer%%
 
 <!-- checkout page scripts -->
-<script src="%%GLOBAL_ShopPath%%/javascript/checkout.js?%%GLOBAL_JSCacheToken%%"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/checkout.js?%%GLOBAL_JSCacheToken%%"></script>
 
-%%Panel.HTMLFoot%%
\ No newline at end of file
+%%Panel.HTMLFoot%%
diff --git a/template/checkout_confirm.html b/template/checkout_confirm.html
old mode 100755
new mode 100644
index 2c5b00b..d7a812d
--- a/template/checkout_confirm.html
+++ b/template/checkout_confirm.html
@@ -11,11 +11,11 @@
 %%Panel.Footer%%
 
 <!-- checkout page scripts -->
-<script src="%%GLOBAL_CdnAppPath%%/javascript/cart.js?%%GLOBAL_JSCacheToken%%"></script>
 %%Panel.ChooseCheckoutProviderJavaScript%%
 <script>
 	%%GLOBAL_PaymentButtonSwitch%%
 	lang.TickArgeeTermsAndConditions = '%%LNG_TickArgeeTermsAndConditions%%';
+	lang.EnterCouponCode = "%%LNG_EnterCouponCode%%";
 </script>
 
-%%Panel.HTMLFoot%%
\ No newline at end of file
+%%Panel.HTMLFoot%%
diff --git a/template/checkout_express.html b/template/checkout_express.html
old mode 100755
new mode 100644
index 44d3774..8292562
--- a/template/checkout_express.html
+++ b/template/checkout_express.html
@@ -33,7 +33,7 @@
 							</div>
 							
 							<input type="submit" class="button" id="CreateAccountButton" value="%%LNG_Continue%%">
-							<span class="LoadingIndicator" style="display: none"><img src="%%GLOBAL_IMG_PATH%%/Loading.gif" alt=""></span>
+							<span class="LoadingIndicator" style="display: none"><img src="%%ASSET_images/Loading.gif%%" alt=""></span>
 						</div>
 						<div style="%%GLOBAL_HideRegisteredCheckoutOptions%%">
 							<h4 class="subheader">%%LNG_NotAnExistingCustomer%%</h4>
@@ -47,7 +47,7 @@
 							</div>
 							<p class="PL40 Submit">
 								<input type="submit" class="button" value="%%LNG_Continue%%">
-								<span class="LoadingIndicator" style="display: none"><img src="%%GLOBAL_IMG_PATH%%/Loading.gif" alt=""></span>
+								<span class="LoadingIndicator" style="display: none"><img src="%%ASSET_images/Loading.gif%%" alt=""></span>
 							</p>
 						</div>
 					</form>
@@ -86,7 +86,7 @@
 								<div class="twelve columns">
 									<p>
 										<input class="button" id="LoginButton" type="submit" value="%%LNG_Continue%%">
-										<span class="LoadingIndicator" style="display: none"><img src="%%GLOBAL_IMG_PATH%%/Loading.gif" alt=""></span>
+										<span class="LoadingIndicator" style="display: none"><img src="%%ASSET_images/Loading.gif%%" alt=""></span>
 										<a class="small secondary button" href="%%GLOBAL_ShopPath%%/login.php?action=reset_password">%%LNG_ForgotYourPassword%%</a>
 									</p>
 								</div>
@@ -182,8 +182,8 @@
 %%Panel.Footer%%
 
 <!-- express checkout page scripts -->
-<script src="%%GLOBAL_ShopPath%%/javascript/express.checkout.js?%%GLOBAL_JSCacheToken%%"></script>
-<script src="%%GLOBAL_ShopPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/express.checkout.js?%%GLOBAL_JSCacheToken%%"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/formfield.js?%%GLOBAL_JSCacheToken%%"></script>
 <script>
 	lang.LoginEnterValidEmail = "%%LNG_LoginEnterValidEmail%%";
 	lang.LoginEnterPassword = "%%LNG_LoginEnterPassword%%";
@@ -240,4 +240,4 @@
 </script>
 %%GLOBAL_CompiledFormFieldJavascript%%
 
-%%Panel.HTMLFoot%%
\ No newline at end of file
+%%Panel.HTMLFoot%%
diff --git a/template/checkout_payment.html b/template/checkout_payment.html
old mode 100755
new mode 100644
diff --git a/template/checkout_shipper.html b/template/checkout_shipper.html
old mode 100755
new mode 100644
index f6b7cc6..0f51f4a
--- a/template/checkout_shipper.html
+++ b/template/checkout_shipper.html
@@ -11,9 +11,9 @@
 %%Panel.Footer%%
 
 <!-- checkout page scripts -->
-<script src="%%GLOBAL_ShopPath%%/javascript/checkout.js?%%GLOBAL_JSCacheToken%%"></script>
+<script src="%%GLOBAL_CdnAppPath%%/javascript/checkout.js?%%GLOBAL_JSCacheToken%%"></script>
 <script>
 	lang.PleaseChooseShippingProvider = "%%LNG_PleaseChooseShippingProvider%%";
 </script>
 
-%%Panel.HTMLFoot%%
\ No newline at end of file
+%%Panel.HTMLFoot%%
diff --git a/template/compare.html b/template/compare.html
old mode 100755
new mode 100644
diff --git a/template/config.php b/template/config.php
new file mode 100644
index 0000000..97c5c2a
--- /dev/null
+++ b/template/config.php
@@ -0,0 +1,154 @@
+<?php
+/**
+ * Configuration File
+ *
+ * This is a PHP file that sets up variables specific for a template.
+ * It can also be used to run PHP code for a template.
+ *
+ * @version 1.6
+ *
+ */
+
+// The name of the template, as it will appear in the control panel
+$GLOBALS['TPL_CFG']['Name']	= 'Athletic';
+
+// The physical name of the template, as determined by the directory it is stored within.
+$GLOBALS['TPL_CFG']['PhysicalName'] = basename(__DIR__);
+
+// The version of the template, as it will appear in the control panel
+$GLOBALS['TPL_CFG']['Version'] = '1.53';
+
+// Make the theme editable with the Style Editor.
+$GLOBALS['TPL_CFG']['StyleEditable'] = true;
+
+$GLOBALS['TPL_CFG']['Premium'] = array(
+    "price" => 14000,
+    "currency" => "usd",
+    "partner" => "Sprout Commerce",
+);
+
+$GLOBALS['TPL_CFG']['Partner'] = array(
+    "Name" => "Sprout Commerce",
+    "Email" => "themesupport@sproutcommerce.com",
+    "Docs" => "http://support.sproutcommerce.com/",
+);
+
+$GLOBALS['TPL_CFG']['Responsive'] = true;
+
+$GLOBALS['TPL_CFG']['FeaturesTextArray'] = array(
+    "Fully Responsive Layout",
+    "Style Editor Enabled",    
+    "Product Filtering Enabled",
+    "Clean and versatile design",
+    "Clearly defined Top Navigation with rollover function",
+    "Search box for quick product find",
+    "Detailed product pages",
+    "Easy customization and maintenance features",
+    "Product grid that adapts to your content and images",
+    "Action buttons turn browsers into buyers",
+);
+
+$GLOBALS['TPL_CFG']['DevicesText'] = "This theme has been tested and approved for use on Chrome, Firefox, IE9+, Apple iOS, Android and Windows Mobile devices.";
+
+$GLOBALS['TPL_CFG']['DescriptionHtml'] = "<p>Athletic's versatile, clean design makes it easy for your customers to find what they are looking for quickly and easily. It's fully responsive design will allow your store to look great on your computer, tablet, and phone while still maintaining your branding!</p>
+<p>What's underneath the hood is also as important. Athletic (Responsive) has been built using Zurb's Foundation framework as the base, which takes advantage of SASS (compiled CSS). This approach standardizes the CSS making it much quicker for a developer to make major changes to your theme. Whether it's right away or in the future, the fact that Athletic (Responsive) is built this way will reduce your costs when it comes to customizing/personalizing your site.</p>";
+
+
+// Recommended dimensions of a logo when it's displayed in the header of this template
+$GLOBALS['TPL_CFG']['LogoWidth'] = 250;
+$GLOBALS['TPL_CFG']['LogoHeight'] = 85;
+
+// Recommended dimensions of carousel images
+$GLOBALS['TPL_CFG']['SlideShowWidth'] = 970;
+$GLOBALS['TPL_CFG']['SlideShowHeight'] = 415;
+
+// The maximum width an image uploaded in DevEdit can be before it's resized.
+// This is used to make sure product images uploaded in DevEdit don't stretch
+// out past the main content area of the template
+/**
+ * @todo Test the MaxImageWidth configuration option
+ */
+$GLOBALS['TPL_CFG']['MaxImageWidth'] = 575;
+
+// The maximum number of products that can be compared side-by-side without
+// messing up the layout of the template
+/**
+ * @todo Test the MaxComparisonProducts configuration option
+ */
+$GLOBALS['TPL_CFG']['MaxComparisonProducts'] = 4;
+
+// The "Powered by" line that this template should use.
+// These lines can be adjusted in /includes/whitelabel.php
+/**
+ * @todo Test the PoweredBy configuration option
+ */
+$GLOBALS['TPL_CFG']['PoweredBy'] = 1;
+
+// This defines the element that uses the header image as a background image
+// All styles (position, repeat) for the background image should be defined in the
+// template CSS except the location (URL), which is defined automatically and applied
+// to the selector (ID, class) defined here:
+///
+/// Not required for this template?
+///
+//$GLOBALS['TPL_CFG']['HeaderImageElement'] = '#Container';
+
+$GLOBALS['TPL_CFG']['NewsPreviewLength'] = 80;
+$GLOBALS['TPL_CFG']['MaxHomePageNewsItems'] = 3;
+
+$GLOBALS['TPL_CFG']['EnableFlyoutMenuSupport'] = false;
+
+$GLOBALS['TPL_CFG']['SupportsSettings'] = true;
+$GLOBALS['TPL_CFG']['Features'] = 1 | 2; // Theme::FEATURE_CAROUSEL | Theme::FEATURE_SOCIAL_ICONS
+
+$GLOBALS['TPL_CFG']['RecommendedCategoryImageWidth'] = 120;
+$GLOBALS['TPL_CFG']['RecommendedCategoryImageHeight'] = 120;
+
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesStorewideThumbnail_width'] = 200;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesStorewideThumbnail_height'] = 200;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesStorewideThumbnail_timeChanged'] = time();
+
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesProductPageImage_width'] = 600;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesProductPageImage_height'] = 600;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesProductPageImage_timeChanged'] = time();
+
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesGalleryThumbnail_width'] = 200;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesGalleryThumbnail_height'] = 200;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesGalleryThumbnail_timeChanged'] = time();
+
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesZoomImage_width'] = 1280;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesZoomImage_height'] = 1280;
+$GLOBALS['TPL_CFG']['ConfigDefaults']['ProductImagesZoomImage_timeChanged'] = time();
+
+$GLOBALS['TPL_CFG']['ConfigDefaults']['enableMobileTemplate'] = !$GLOBALS['TPL_CFG']['Responsive'];
+$GLOBALS['TPL_CFG']['ConfigDefaults']['SocialMedia_UseThemeIcons'] = true;
+
+$GLOBALS['TPL_CFG']['Fonts'] = array(
+		'Montserrat' => array(
+			'type' => 'css',
+			'url' => '//fonts.googleapis.com/css?family=Karla:400,400italic,700,700italic',
+			'contextsRequiredBy' => array(
+				'design',
+			),
+		),
+);
+
+$GLOBALS['TPL_CFG']['Enabled'] = true;
+
+// disables automatic loading of product.attributes.css, product.quickview.css, ui.all.css, imodal.css, store.css,
+// jquery.jqzoom.css and possibly other CSS files when set to true
+$GLOBALS['TPL_CFG']['DisableAdditionalStylesheets'] = true;
+
+$GLOBALS['TPL_CFG']['DemoStore'] = "http://athletic-demo.mybigcommerce.com";
+
+$GLOBALS['TPL_CFG']['Stylesheets'] = array(
+                array(
+                    'stylesheet' => 'Styles/styles.css',
+                ),
+                array(
+                    'stylesheet' => 'Styles/theme.css',
+                ),
+                array(
+                    'stylesheet' => 'Styles/mods.css',
+                ),
+);
diff --git a/template/createaccount.html b/template/createaccount.html
old mode 100755
new mode 100644
diff --git a/template/createaccount_thanks.html b/template/createaccount_thanks.html
old mode 100755
new mode 100644
diff --git a/template/default.html b/template/default.html
old mode 100755
new mode 100644
diff --git a/template/editaccount.html b/template/editaccount.html
old mode 100755
new mode 100644
diff --git a/template/empty_blog.html b/template/empty_blog.html
old mode 100755
new mode 100644
diff --git a/template/error.html b/template/error.html
old mode 100755
new mode 100644
diff --git a/template/eselectplusdp.html b/template/eselectplusdp.html
new file mode 100644
index 0000000..635d3f3
--- /dev/null
+++ b/template/eselectplusdp.html
@@ -0,0 +1,58 @@
+<p class="InfoMessage Message">
+	%%LNG_eSelectPlusDPPaymentIntro%%
+</p>
+<p class="ErrorMessage Message" style="display:%%GLOBAL_HideeSelectPlusDPError%%">
+	%%LNG_eSelectPlusDPProcessingError%%<br />
+	<strong>%%GLOBAL_eSelectPlusDPErrorMessage%%</strong>
+</p>
+<form action="%%GLOBAL_ShopPathSSL%%/checkout.php?action=process_payment" method="post" onsubmit="return check_eselectplusdp_payment_form()">
+	<div class="FormContainer HorizontalFormContainer">
+		<dl>
+			<dt><span class="Required">*</span> %%LNG_eSelectPlusDPCreditCardNo%%:</dt>
+			<dd>
+				<input type="text" name="cc_num" id="cc_num" value="%%GLOBAL_eSelectPlusDPNum%%" size="30" class="Field200" />
+				<br />
+				<small>%%LNG_eSelectPlusDPCreditCardNoHelp%%</small>
+			</dd>
+
+			<dt><span class="Required">*</span> %%LNG_eSelectPlusDPExpirationDate%%:</dt>
+			<dd>
+				<select name="expMonth" id="expMonth">
+					<option value=""></option>
+					%%GLOBAL_eSelectPlusDPMonths%%
+				</select>
+				<select name="expYear" id="expYear">
+					<option value=""></option>
+					%%GLOBAL_eSelectPlusDPYears%%
+				</select>
+			</dd>
+
+			<dt><span class="Required">*</span> %%LNG_eSelectPlusDPCreditCardCCV2%%:</dt>
+			<dd id="CVV2Input">
+				<input type="text" class="Textbox" name="cvd_value" id="cvd_value" value="%%GLOBAL_eSelectPlusDPCCV2%%" size="4" />
+				&nbsp;<small><a href="#" id="CVV2Help">%%LNG_WhatsThis%%</a></small>
+			</dd>
+
+			<dt><span class="Required">*</span> %%LNG_eSelectPlusDPCardHoldersName%%:</dt>
+			<dd><input type="text" name="cardholder" id="cardholder" value="%%GLOBAL_eSelectPlusDPCardHolderName%%" size="20" /></dd>
+
+			<dt><span class="Required">*</span> %%LNG_eSelectPlusDPStreetName%%:</dt>
+			<dd>
+				<input type="text" name="avs_street_number" id="avs_street_number" value="%%GLOBAL_eSelectPlusDPBillStNum%%" size="20" class="Textbox Field45" />
+				<input type="text" name="avs_street_name" id="avs_street_name" value="%%GLOBAL_eSelectPlusDPBillStName%%" size="20" class="Field200" />
+				</dd>
+
+			<dt><span class="Required">*</span> %%LNG_eSelectPlusDPZip%%:</dt>
+			<dd><input type="text" name="avs_zipcode" id="avs_zipcode" value="%%GLOBAL_eSelectPlusDPBillZip%%" size="6" /></dd>
+
+			<dt>&nbsp;&nbsp; %%LNG_eSelectPlusDPTotalAmount%%:</dt>
+			<dd>
+				<em class="ProductPrice">%%GLOBAL_OrderAmount%%</em>
+			</dd>
+		</dl>
+		<p class="Submit">
+			<input type="submit" value="%%LNG_eSelectPlusDPPayForOrder%%" />
+		</p>
+	</div>
+</form>
+%%Panel.eSelectPlusDPPaymentJavaScript%%
\ No newline at end of file
diff --git a/template/eway.html b/template/eway.html
new file mode 100644
index 0000000..af975f3
--- /dev/null
+++ b/template/eway.html
@@ -0,0 +1,49 @@
+	<p class="InfoMessage Message">
+		%%LNG_EWayPaymentIntro%%
+	</p>
+
+	<p class="ErrorMessage Message" style="display: %%GLOBAL_HideEWayError%%">
+		<strong>%%LNG_EWayProcessingError%%</strong><br />
+		%%GLOBAL_EWayErrorMessage%%
+	</p>
+
+	<form action="%%GLOBAL_ShopPathSSL%%/checkout.php?action=process_payment" method="post" onsubmit="return check_eway_payment_form()">
+		<div class="FormContainer HorizontalFormContainer">
+			<dl>
+				<dt><span class="Required">*</span> %%LNG_EWayCardHoldersName%%:</dt>
+				<dd><input type="text" class="Textbox" name="eway_name" id="eway_name" value="%%GLOBAL_EWayName%%" size="30" /></dd>
+
+				<dt><span class="Required">*</span> %%LNG_EWayCreditCardNo%%:</dt>
+				<dd>
+					<input type="text" class="Textbox" name="eway_ccno" id="eway_ccno" value="" size="30" />
+					<br />
+					<small>%%LNG_EWayCreditCardNoHelp%%</small>
+				</dd>
+
+				<dt><span class="Required">*</span> %%LNG_EWayExpirationDate%%:</dt>
+				<dd>
+					<select name="eway_ccexpm" id="eway_ccexpm">
+						<option value=""></option>
+						%%GLOBAL_EWayMonths%%
+					</select>
+					<select name="eway_ccexpy" id="eway_ccexpy">
+						<option value=""></option>
+						%%GLOBAL_EWayYears%%
+					</select>
+				</dd>
+
+				<dt class="CVNInput" style="display: %%GLOBAL_EWayHideCardCode%%"><span class="Required">*</span> %%LNG_EWayCardCode%%:</dt>
+				<dd class="CVNInput" id="CardCodeInput" style="display: %%GLOBAL_EWayHideCardCode%%">
+					<input type="text" class="Textbox" name="eway_cvn" id="eway_cvn" value="%%GLOBAL_EWayCardCode%%" size="4" />
+					&nbsp;<small><a href="#" id="CVV2Help">%%LNG_WhatsThis%%</a></small>
+				</dd>
+
+				<dt>&nbsp;&nbsp; %%LNG_EWayTotalAmount%%:</dt>
+				<dd><em class="ProductPrice">%%GLOBAL_OrderAmount%%</em></dd>
+			</dl>
+			<p class="Submit">
+				<input type="submit" value="%%LNG_EWayPayForOrder%%" />
+			</p>
+		</div>
+	</form>
+%%Panel.EWayPaymentJavaScript%%
\ No newline at end of file
diff --git a/template/font/FontAwesome.otf b/template/font/FontAwesome.otf
old mode 100755
new mode 100644
diff --git a/template/font/fontawesome-webfont.eot b/template/font/fontawesome-webfont.eot
old mode 100755
new mode 100644
diff --git a/template/font/fontawesome-webfont.svg b/template/font/fontawesome-webfont.svg
old mode 100755
new mode 100644
diff --git a/template/font/fontawesome-webfont.ttf b/template/font/fontawesome-webfont.ttf
old mode 100755
new mode 100644
diff --git a/template/font/fontawesome-webfont.woff b/template/font/fontawesome-webfont.woff
old mode 100755
new mode 100644
diff --git a/template/forgotpassword.html b/template/forgotpassword.html
old mode 100755
new mode 100644
diff --git a/template/genericcreditcard.html b/template/genericcreditcard.html
new file mode 100644
index 0000000..149a891
--- /dev/null
+++ b/template/genericcreditcard.html
@@ -0,0 +1,84 @@
+	<p class="InfoMessage Message">
+		%%LNG_CreditCardPaymentIntro%%
+	</p>
+
+	<p class="ErrorMessage Message" style="display: %%GLOBAL_HideCreditCardError%%">
+		<strong>%%LNG_CreditCardProcessingError%%</strong><br />
+		%%GLOBAL_CreditCardErrorMessage%%
+	</p>
+
+	<p class="InfoMessage Message" style="display: %%GLOBAL_HideCreditCardError%%">
+		<a href="checkout.php?action=choose_billing_address">Click Here to Change Billing Details if Required</a>
+	</p>
+
+	<form action="%%GLOBAL_ShopPathSSL%%/checkout.php?action=process_payment" method="post" onsubmit="return check_creditcard_payment_form()">
+		
+		<div class="FormContainer HorizontalFormContainer">
+			<dl>
+				<dt><span class="Required">*</span> %%LNG_CreditCardCardType%%:</dt>
+				<dd>
+					<select name="creditcard_cctype" id="creditcard_cctype" style="width:175px" onchange="updateCreditCardType()">
+						<option value="">%%LNG_CreditCardPleaseChoose%%</option>
+						%%GLOBAL_CCTypes%%
+					</select>
+				</dd>
+
+				<dt><span class="Required">*</span> %%LNG_CreditCardCardHoldersName%%:</dt>
+				<dd><input type="text" class="Textbox" name="creditcard_name" id="creditcard_name" value="%%GLOBAL_CreditCardName%%" size="30" /></dd>
+
+				<dt><span class="Required">*</span> %%LNG_CreditCardCreditCardNo%%:</dt>
+				<dd>
+					<input type="text" class="Textbox" name="creditcard_ccno" id="creditcard_ccno" value="%%GLOBAL_CreditCardNum%%" size="30" />
+					<br />
+					<small>%%LNG_CreditCardCreditCardNoHelp%%</small>
+				</dd>
+
+				<dt class="CreditCardIssueNo"><span class="Required">&nbsp;</span> %%LNG_CreditCardCreditCardIssueNo%%:</dt>
+				<dd class="CreditCardIssueNo">
+					<input type="text" class="Textbox" name="creditcard_issueno" id="creditcard_issueno" value="%%GLOBAL_CreditCardIssueNo%%" size="4" />
+					<br />
+					<small>%%LNG_CreditCardCreditCardIssueNoHelp%%</small>
+				</dd>
+
+				<dt class="CreditCardIssueDate"><span class="Required">&nbsp;</span> %%LNG_CreditCardIssueDate%%:</dt>
+				<dd class="CreditCardIssueDate">
+					<select name="creditcard_issuedatem" id="creditcard_issuedatem">
+						<option value=""></option>
+						%%GLOBAL_CreditCardIssueDateMonths%%
+					</select>
+					<select name="creditcard_issuedatey" id="creditcard_issuedatey">
+						<option value=""></option>
+						%%GLOBAL_CreditCardIssueDateYears%%
+					</select>
+					<br />
+					<small>%%LNG_CreditCardIssueDateHelp%%</small>
+				</dd>
+
+				<dt><span class="Required">*</span> %%LNG_CreditCardExpirationDate%%:</dt>
+				<dd>
+					<select name="creditcard_ccexpm" id="creditcard_ccexpm">
+						<option value=""></option>
+						%%GLOBAL_CreditCardMonths%%
+					</select>
+					<select name="creditcard_ccexpy" id="creditcard_ccexpy">
+						<option value=""></option>
+						%%GLOBAL_CreditCardYears%%
+					</select>
+				</dd>
+
+				<dt class="CVV2Input" style="display: %%GLOBAL_CreditCardHideCardCode%%"><span class="Required">*</span> %%LNG_CreditCardCardCode%%:</dt>
+				<dd class="CVV2Input" id="CardCodeInput" style="display: %%GLOBAL_CreditCardHideCardCode%%">
+					<input type="text" class="Textbox" name="creditcard_cccvd" id="creditcard_cccvd" value="%%GLOBAL_CreditCardCardCode%%" size="4" />
+					&nbsp;<small><a href="#" id="CVV2Help">%%LNG_WhatsThis%%</a></small>
+				</dd>
+
+				<dt>&nbsp;&nbsp; %%LNG_CreditCardTotalAmount%%:</dt>
+				<dd><em class="ProductPrice">%%GLOBAL_OrderAmount%%</em></dd>
+			</dl>
+			<p class="Submit">
+				<input type="submit" value="%%LNG_CreditCardPayForOrder%%" />
+			</p>
+		</div>
+	</form>
+	%%GLOBAL_AdditionalPaymentPageContents%%
+%%Panel.GenericCreditCardPaymentJavaScript%%
\ No newline at end of file
diff --git a/template/getnewpassword.html b/template/getnewpassword.html
old mode 100755
new mode 100644
diff --git a/template/giftcertificates.html b/template/giftcertificates.html
old mode 100755
new mode 100644
diff --git a/template/giftcertificates_balance.html b/template/giftcertificates_balance.html
old mode 100755
new mode 100644
diff --git a/template/giftcertificates_redeem.html b/template/giftcertificates_redeem.html
old mode 100755
new mode 100644
diff --git a/template/ideal.html b/template/ideal.html
new file mode 100644
index 0000000..b124ff7
--- /dev/null
+++ b/template/ideal.html
@@ -0,0 +1,8 @@
+<p class="InfoMessage Message">
+	%%LNG_IdealPaymentIntro%%
+</p>
+<p class="ErrorMessage Message" style="display:%%GLOBAL_HideIdealError%%">
+	%%LNG_IdealProcessingError%%<br />
+	<strong>%%GLOBAL_IdealErrorMessage%%</strong>
+</p>
+%%GLOBAL_IdealPaymentForm%%
\ No newline at end of file
diff --git a/template/images/ArrowDown.gif b/template/images/ArrowDown.gif
old mode 100755
new mode 100644
diff --git a/template/images/ArrowUp.gif b/template/images/ArrowUp.gif
old mode 100755
new mode 100644
diff --git a/template/images/BrandDefault.gif b/template/images/BrandDefault.gif
old mode 100755
new mode 100644
diff --git a/template/images/BreadcrumbSep.gif b/template/images/BreadcrumbSep.gif
old mode 100755
new mode 100644
diff --git a/template/images/Carousel-Navigation-L-Hover.png b/template/images/Carousel-Navigation-L-Hover.png
old mode 100755
new mode 100644
diff --git a/template/images/Carousel-Navigation-L.png b/template/images/Carousel-Navigation-L.png
old mode 100755
new mode 100644
diff --git a/template/images/Carousel-Navigation-R-Hover.png b/template/images/Carousel-Navigation-R-Hover.png
old mode 100755
new mode 100644
diff --git a/template/images/Carousel-Navigation-R.png b/template/images/Carousel-Navigation-R.png
old mode 100755
new mode 100644
diff --git a/template/images/Cart2.gif b/template/images/Cart2.gif
old mode 100755
new mode 100644
diff --git a/template/images/CategoryDefault.gif b/template/images/CategoryDefault.gif
old mode 100755
new mode 100644
diff --git a/template/images/ContentBg.gif b/template/images/ContentBg.gif
old mode 100755
new mode 100644
diff --git a/template/images/ContentBgWide.gif b/template/images/ContentBgWide.gif
old mode 100755
new mode 100644
diff --git a/template/images/ContentBgWidest.gif b/template/images/ContentBgWidest.gif
old mode 100755
new mode 100644
diff --git a/template/images/ErrorMessage.gif b/template/images/ErrorMessage.gif
old mode 100755
new mode 100644
diff --git a/template/images/ExampleGiftCertificate.gif b/template/images/ExampleGiftCertificate.gif
old mode 100755
new mode 100644
diff --git a/template/images/GiftWrappingAvailable.gif b/template/images/GiftWrappingAvailable.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoError.gif b/template/images/IcoError.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoMessage1.gif b/template/images/IcoMessage1.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoMessage2.gif b/template/images/IcoMessage2.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoRating0.gif b/template/images/IcoRating0.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoRating1.gif b/template/images/IcoRating1.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoRating2.gif b/template/images/IcoRating2.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoRating3.gif b/template/images/IcoRating3.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoRating4.gif b/template/images/IcoRating4.gif
old mode 100755
new mode 100644
diff --git a/template/images/IcoRating5.gif b/template/images/IcoRating5.gif
old mode 100755
new mode 100644
diff --git a/template/images/InfoMessage.gif b/template/images/InfoMessage.gif
old mode 100755
new mode 100644
diff --git a/template/images/LeftArrow.png b/template/images/LeftArrow.png
old mode 100755
new mode 100644
diff --git a/template/images/LeftIcoRating0.gif b/template/images/LeftIcoRating0.gif
old mode 100755
new mode 100644
diff --git a/template/images/LeftIcoRating1.gif b/template/images/LeftIcoRating1.gif
old mode 100755
new mode 100644
diff --git a/template/images/LeftIcoRating2.gif b/template/images/LeftIcoRating2.gif
old mode 100755
new mode 100644
diff --git a/template/images/LeftIcoRating3.gif b/template/images/LeftIcoRating3.gif
old mode 100755
new mode 100644
diff --git a/template/images/LeftIcoRating4.gif b/template/images/LeftIcoRating4.gif
old mode 100755
new mode 100644
diff --git a/template/images/LeftIcoRating5.gif b/template/images/LeftIcoRating5.gif
old mode 100755
new mode 100644
diff --git a/template/images/Loading.gif b/template/images/Loading.gif
old mode 100755
new mode 100644
diff --git a/template/images/MagnifyingGlass.cur b/template/images/MagnifyingGlass.cur
old mode 100755
new mode 100644
diff --git a/template/images/MagnifyingGlass.png b/template/images/MagnifyingGlass.png
old mode 100755
new mode 100644
diff --git a/template/images/NodeJoin.gif b/template/images/NodeJoin.gif
old mode 100755
new mode 100644
diff --git a/template/images/ProductDefault.50.50.gif b/template/images/ProductDefault.50.50.gif
new file mode 100644
index 0000000..ad027df
Binary files /dev/null and b/template/images/ProductDefault.50.50.gif differ
diff --git a/template/images/ProductDefault.gif b/template/images/ProductDefault.gif
old mode 100755
new mode 100644
diff --git a/template/images/RSS.gif b/template/images/RSS.gif
old mode 100755
new mode 100644
diff --git a/template/images/RightArrow.png b/template/images/RightArrow.png
old mode 100755
new mode 100644
diff --git a/template/images/SearchQueryBg.gif b/template/images/SearchQueryBg.gif
old mode 100755
new mode 100644
diff --git a/template/images/SubBrand.gif b/template/images/SubBrand.gif
old mode 100755
new mode 100644
diff --git a/template/images/SubCategory.gif b/template/images/SubCategory.gif
old mode 100755
new mode 100644
diff --git a/template/images/SuccessMessage.gif b/template/images/SuccessMessage.gif
old mode 100755
new mode 100644
diff --git a/template/images/VideoOverlay.png b/template/images/VideoOverlay.png
old mode 100755
new mode 100644
diff --git a/template/images/ajax-loader.gif b/template/images/ajax-loader.gif
old mode 100755
new mode 100644
diff --git a/template/images/calendar.gif b/template/images/calendar.gif
old mode 100755
new mode 100644
diff --git a/template/images/close.gif b/template/images/close.gif
old mode 100755
new mode 100644
diff --git a/template/images/cookie-sprite.png b/template/images/cookie-sprite.png
old mode 100755
new mode 100644
diff --git a/template/images/edit.png b/template/images/edit.png
old mode 100755
new mode 100644
diff --git a/template/images/fancybox/blank.gif b/template/images/fancybox/blank.gif
old mode 100755
new mode 100644
diff --git a/template/images/fancybox/fancybox_loading.gif b/template/images/fancybox/fancybox_loading.gif
old mode 100755
new mode 100644
diff --git a/template/images/fancybox/fancybox_loading@2x.gif b/template/images/fancybox/fancybox_loading@2x.gif
old mode 100755
new mode 100644
diff --git a/template/images/fancybox/fancybox_overlay.png b/template/images/fancybox/fancybox_overlay.png
old mode 100755
new mode 100644
diff --git a/template/images/fancybox/fancybox_sprite.png b/template/images/fancybox/fancybox_sprite.png
old mode 100755
new mode 100644
diff --git a/template/images/fancybox/fancybox_sprite@2x.png b/template/images/fancybox/fancybox_sprite@2x.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/bullets.jpg b/template/images/foundation/orbit/bullets.jpg
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/left-arrow-small.png b/template/images/foundation/orbit/left-arrow-small.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/left-arrow.png b/template/images/foundation/orbit/left-arrow.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/loading.gif b/template/images/foundation/orbit/loading.gif
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/mask-black.png b/template/images/foundation/orbit/mask-black.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/pause-black.png b/template/images/foundation/orbit/pause-black.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/right-arrow-small.png b/template/images/foundation/orbit/right-arrow-small.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/right-arrow.png b/template/images/foundation/orbit/right-arrow.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/rotator-black.png b/template/images/foundation/orbit/rotator-black.png
old mode 100755
new mode 100644
diff --git a/template/images/foundation/orbit/timer-black.png b/template/images/foundation/orbit/timer-black.png
old mode 100755
new mode 100644
diff --git a/template/images/hero_next.gif b/template/images/hero_next.gif
old mode 100755
new mode 100644
diff --git a/template/images/hero_prev.gif b/template/images/hero_prev.gif
old mode 100755
new mode 100644
diff --git a/template/images/icon-eye-open.png b/template/images/icon-eye-open.png
old mode 100755
new mode 100644
diff --git a/template/images/l-arrow.png b/template/images/l-arrow.png
old mode 100755
new mode 100644
diff --git a/template/images/out-of-stock-bg.png b/template/images/out-of-stock-bg.png
old mode 100755
new mode 100644
diff --git a/template/images/paypal_btn_checkout_118x24.png b/template/images/paypal_btn_checkout_118x24.png
old mode 100755
new mode 100644
diff --git a/template/images/paypal_btn_checkout_295x43.png b/template/images/paypal_btn_checkout_295x43.png
old mode 100755
new mode 100644
diff --git a/template/images/r-arrow.png b/template/images/r-arrow.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/AddCartButton.gif b/template/images/responsive/AddCartButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/Arrow.gif b/template/images/responsive/Arrow.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/BgCatMenu.png b/template/images/responsive/BgCatMenu.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/BgContainerFooter.gif b/template/images/responsive/BgContainerFooter.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/BgHeading.gif b/template/images/responsive/BgHeading.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/BodyBg.gif b/template/images/responsive/BodyBg.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/Cart.gif b/template/images/responsive/Cart.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/CartSmall.gif b/template/images/responsive/CartSmall.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/CategoryTitle.gif b/template/images/responsive/CategoryTitle.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/CheckoutButton.gif b/template/images/responsive/CheckoutButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/CompareButton.gif b/template/images/responsive/CompareButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/DropdownMenuBg.gif b/template/images/responsive/DropdownMenuBg.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/ErrorIcon.png b/template/images/responsive/ErrorIcon.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/ExpressChktSel.gif b/template/images/responsive/ExpressChktSel.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/GoButton.gif b/template/images/responsive/GoButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/InfoIcon.png b/template/images/responsive/InfoIcon.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/Logo.gif b/template/images/responsive/Logo.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/MenuDivider.gif b/template/images/responsive/MenuDivider.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/MiniCheckoutButton.gif b/template/images/responsive/MiniCheckoutButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/NewsletterSubscribe.gif b/template/images/responsive/NewsletterSubscribe.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/NotifyMeButton.gif b/template/images/responsive/NotifyMeButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/OrderDetailsButton.gif b/template/images/responsive/OrderDetailsButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/PaymentButton.gif b/template/images/responsive/PaymentButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/PaymentButtonContinue.gif b/template/images/responsive/PaymentButtonContinue.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/QuickSearchAllResultsButton.gif b/template/images/responsive/QuickSearchAllResultsButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/QuickSearchAllResultsButton.png b/template/images/responsive/QuickSearchAllResultsButton.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/ReorderButton.gif b/template/images/responsive/ReorderButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/ReorderSelected.gif b/template/images/responsive/ReorderSelected.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/ReturnItemsButton.gif b/template/images/responsive/ReturnItemsButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/Search.gif b/template/images/responsive/Search.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/SearchBg.gif b/template/images/responsive/SearchBg.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/SidebarLi.gif b/template/images/responsive/SidebarLi.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/SuccessIcon.png b/template/images/responsive/SuccessIcon.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/UpdateQtyButton.gif b/template/images/responsive/UpdateQtyButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/WishlistButton.gif b/template/images/responsive/WishlistButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/WriteReviewButton.gif b/template/images/responsive/WriteReviewButton.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/accordion_close.gif b/template/images/responsive/accordion_close.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/accordion_open.gif b/template/images/responsive/accordion_open.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/banner1.gif b/template/images/responsive/banner1.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/bg_direction_nav.png b/template/images/responsive/bg_direction_nav.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/hero_next.gif b/template/images/responsive/hero_next.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/hero_prev.gif b/template/images/responsive/hero_prev.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/icon_fb.gif b/template/images/responsive/icon_fb.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/icon_fl.gif b/template/images/responsive/icon_fl.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/icon_li.gif b/template/images/responsive/icon_li.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/icon_tw.gif b/template/images/responsive/icon_tw.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/icon_yt.gif b/template/images/responsive/icon_yt.gif
old mode 100755
new mode 100644
diff --git a/template/images/responsive/phoneIcon.png b/template/images/responsive/phoneIcon.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/up-arrow.png b/template/images/responsive/up-arrow.png
old mode 100755
new mode 100644
diff --git a/template/images/responsive/wishlist-text.gif b/template/images/responsive/wishlist-text.gif
old mode 100755
new mode 100644
diff --git a/template/images/select2/select2.png b/template/images/select2/select2.png
deleted file mode 100755
index 1d804ff..0000000
Binary files a/template/images/select2/select2.png and /dev/null differ
diff --git a/template/images/select2/select2x2.png b/template/images/select2/select2x2.png
deleted file mode 100755
index 4bdd5c9..0000000
Binary files a/template/images/select2/select2x2.png and /dev/null differ
diff --git a/template/images/select2/spinner.gif b/template/images/select2/spinner.gif
deleted file mode 100755
index 5b33f7e..0000000
Binary files a/template/images/select2/spinner.gif and /dev/null differ
diff --git a/template/images/share.png b/template/images/share.png
old mode 100755
new mode 100644
diff --git a/template/images/sprite-social-default.png b/template/images/sprite-social-default.png
old mode 100755
new mode 100644
diff --git a/template/images/sprite-social.png b/template/images/sprite-social.png
old mode 100755
new mode 100644
diff --git a/template/images/star_rating.png b/template/images/star_rating.png
old mode 100755
new mode 100644
diff --git a/template/images/star_rating_grey.png b/template/images/star_rating_grey.png
old mode 100755
new mode 100644
diff --git a/template/images/trash.png b/template/images/trash.png
old mode 100755
new mode 100644
diff --git a/template/images/white/bg_direction_nav.png b/template/images/white/bg_direction_nav.png
old mode 100755
new mode 100644
diff --git a/template/invoice_print.html b/template/invoice_print.html
new file mode 100644
index 0000000..a5fd2c7
--- /dev/null
+++ b/template/invoice_print.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
+<head>
+<title>%%Page.WindowTitle%%</title>
+<link rel="stylesheet" href="%%GLOBAL_PrintInvoiceStylesheetPath%%/printinvoice.css?%%GLOBAL_JSCacheToken%%" type="text/css"/>
+</head>
+
+<body>
+	%%GLOBAL_PrintableInvoiceList%%
+
+	%%GLOBAL_PrintableInvoiceScript%%
+</body>
+</html>
diff --git a/template/js/bc/cart.js b/template/js/bc/cart.js
deleted file mode 100755
index 511d820..0000000
--- a/template/js/bc/cart.js
+++ /dev/null
@@ -1,299 +0,0 @@
-var Cart = {
-	ToggleShippingEstimation: function()
-	{
-		$('.EstimatedShippingMethods').hide(250);
-		
-		if($('.EstimateShipping').is(':hidden')) {
-			$('.EstimateShippingLink').hide();
-			$('.EstimateShipping').slideDown(250);
-		}
-		else {
-			$('.EstimateShipping').slideUp(250,function(){
-				$('.EstimateShippingLink').fadeIn(250);
-			});
-		}
-
-		$('.EstimateShipping select:eq(0)').focus();
-		
-		return false;
-	},
-
-	EstimateShipping: function()
-	{
-		if ($('#shippingZoneCountry').val() == 0) {
-			alert(lang.SelectCountry);
-			$('#shippingZoneCountry').focus();
-			return;
-		}
-
-		if ($('#shippingZoneState').is(':visible') && $('#shippingZoneState').val() == 0) {
-			alert(lang.SelectState);
-			$('#shippingZoneState').focus();
-			return;
-		}
-
-		if ($.trim($('#shippingZoneZip').val()) == '') {
-			alert(lang.EnterZip);
-			$('#shippingZoneZip').focus();
-			return;
-		}
-
-		$('.EstimatedShippingMethods').hide();
-		$('.EstimateShipping .EstimateShippingButtons span').hide();
-		$('.EstimateShipping .EstimateShippingButtons input')
-			.data('oldVal', $('.EstimateShipping .EstimateShippingButtons input').val())
-			.val(lang.Calculating)
-			.attr('disabled', true)
-		;
-		$.ajax({
-			url: 'remote.php',
-			type: 'post',
-			data: {
-				w: 'getShippingQuotes',
-				countryId: $('#shippingZoneCountry').val(),
-				stateId: $('#shippingZoneState').val(),
-				stateName: escape($('#shippingZoneStateName').val()),
-				zipCode: $('#shippingZoneZip').val()
-			},
-			success: function(data)
-			{	
-				$('.EstimatedShippingMethods .ShippingMethodList').html(data);
-
-				$('.EstimatedShippingMethods .ShippingMethodList table').addClass('twelve');
-				$('.EstimatedShippingMethods .ShippingMethodList .Submit input').addClass('button');
-
-				$('.EstimatedShippingMethods').show(250);
-				$('.EstimateShipping .EstimateShippingButtons span').show(250);
-				$('.EstimateShipping .EstimateShippingButtons input')
-					.val($('.EstimateShipping .EstimateShippingButtons input').data('oldVal'))
-					.attr('disabled', false)
-				;
-			}
-		});
-	},
-
-	ToggleShippingEstimateCountry: function()
-	{
-		var countryId = $('#shippingZoneCountry').val();
-		$.ajax({
-			url: 'remote.php',
-			type: 'post',
-			data: 'w=countryStates&c='+countryId,
-			success: function(data)
-			{
-				$('#shippingZoneState option:gt(0)').remove();
-				var states = data.split('~');
-				var numStates = 0;
-				for(var i =0; i < states.length; ++i) {
-					vals = states[i].split('|');
-					if(!vals[0]) {
-						continue;
-					}
-					$('#shippingZoneState').append('<option value="'+vals[1]+'">'+vals[0]+'</option>');
-					++numStates;
-				}
-
-				$('#s2id_shippingZoneState .select2-choice span').text('Choose a State');
-
-				if(numStates == 0) {
-					$('#shippingZoneState').hide();
-					$('#shippingZoneStateName').show();
-					$('#shippingZoneStateRequired').hide();
-					
-					$('#s2id_shippingZoneState').hide();
-				}
-				else {
-					$('#shippingZoneState').show();
-					$('#shippingZoneStateName').hide();
-					$('#shippingZoneStateRequired').show();
-					
-					$('#s2id_shippingZoneState').show();
-				}
-				
-				$('#shippingZoneState').val('0');
-			}
-		});
-	},
-
-	UpdateShippingCost: function()
-	{
-		var returnVal = true;
-		var method = $('.EstimatedShippingMethods table').each(function() {
-			var method = $('input[type=radio]:checked', this).val();
-			if(typeof(method) == 'undefined' || method == '') {
-				alert(lang.ChooseShippingMethod);
-				$('input[type=radio]:eq(0)', this).focus();
-				returnVal = false;
-				return returnVal;
-			}
-		});
-
-		if(returnVal == false) {
-			return returnVal;
-		}
-
-		$('#cartForm').submit();
-	},
-
-	RemoveItem: function(itemId)
-	{
-		if(confirm(lang.CartRemoveConfirm)) {
-			document.location.href = "cart.php?action=remove&item="+itemId;
-		}
-	},
-
-	UpdateQuantity: function(qty)
-	{
-		if(qty == 0) {
-			if(confirm(lang.CartRemoveConfirm)) {
-				$('#cartForm').submit();
-			}
-			else {
-				return false;
-			}
-		}
-		else {
-			$('#cartForm').submit();
-		}
-	},
-
-	ValidateQuantityForm: function(form)
-	{
-		var valid = true;
-		var qtyInputs = $(form).find('input.qtyInput');
-		qtyInputs.each(function() {
-			if(isNaN($(this).val()) || $(this).val() < 0) {
-				alert(lang.InvalidQuantity);
-				this.focus();
-				this.select();
-				valid = false;
-				return false;
-			}
-		});
-		if(valid == false) {
-			return false;
-		}
-
-		return true;
-	},
-
-	CheckCouponCode: function()
-	{
-		if($('#couponcode').val() == '') {
-			alert(lang.EnterCouponCode);
-			$('#couponcode').focus();
-			return false;
-		}
-	},
-
-	CheckGiftCertificateCode: function()
-	{
-		if($('#giftcertificatecode').val() == '') {
-			alert(lang.EnterGiftCertificateCode);
-			$('#giftcertificatecode').focus();
-			return false;
-		}
-	},
-
-	ManageGiftWrapping: function(itemId)
-	{
-		$.iModal({
-			type: 'ajax',
-			url: 'remote.php?w=selectGiftWrapping&itemId='+itemId
-		});
-	},
-
-	ToggleGiftWrappingType: function(option)
-	{
-		if($(option).hasClass('HasPreview')) {
-			$('.GiftWrappingPreviewLinks').hide();
-			$('#GiftWrappingPreviewLink'+$(option).val()).show();
-		}
-		else {
-			$('.GiftWrappingPreviewLinks').hide();
-		}
-
-		if($(option).hasClass('AllowComments')) {
-			$(option).parents('.WrappingOption').find('.WrapComments').show();
-		}
-		else {
-			$(option).parents('.WrappingOption').find('.WrapComments').hide();
-		}
-	},
-
-	ToggleMultiWrapping: function(value)
-	{
-		if(value == 'same') {
-			$('.WrappingOptionsSingle').show();
-			$('.WrappingOptionsMultiple').hide();
-		}
-		else {
-			$('.WrappingOptionsSingle').hide();
-			$('.WrappingOptionsMultiple').show();
-		}
-	},
-
-	RemoveGiftWrapping: function(itemId)
-	{
-		if(confirm(lang.ConfirmRemoveGiftWrapping)) {
-			return true;
-		}
-		else {
-			return false;
-		}
-	},
-
-	ShowEditOptionsInCartForm: function(itemId)
-	{
-		var modalOptions = {
-			type: 'ajax',
-			url: 'remote.php?w=editconfigurablefieldsincart&itemid='+itemId
-		};
-
-		if (typeof config == 'object' && config.isMobile) {
-			modalOptions.width = 300;
-		}
-
-		$.iModal(modalOptions);
-	},
-
-	saveItemCustomizations: function()
-	{
-		if (!CheckProductConfigurableFields($('#CartEditProductFieldsForm'))) {
-			return false;
-		}
-
-		// validate the attributes
-		var attributesValidated = $('#CartEditProductFieldsForm')
-			.validate()
-			.form();
-
-		if (!attributesValidated) {
-			return false;
-		}
-
-		return true;
-	},
-
-	DeleteUploadedFile: function(fieldid, itemid)
-	{
-		if(confirm(lang.DeleteProductFieldFileConfirmation)) {
-			$.ajax({
-				url: 'remote.php',
-				type: 'post',
-				data: 'w=deleteuploadedfileincart&field='+fieldid+'&item='+itemid,
-				success: function(data) {
-					document.getElementById('CurrentProductFile_'+fieldid).value = '';
-					$('#CartFileName_'+fieldid).hide();
-				}
-			});
-		}
-		return;
-	},
-
-	ReloadCart: function()
-	{
-		window.location = "cart.php";
-	}
-
-};
\ No newline at end of file
diff --git a/template/js/bc/common.js b/template/js/bc/common.js
deleted file mode 100755
index 839b04c..0000000
--- a/template/js/bc/common.js
+++ /dev/null
@@ -1,999 +0,0 @@
-/* Common Javascript functions for use throughout Interspire Shopping Cart */
-
-$(function(){
-	// this is here just incase the HTMLHead code fails
-	$('html').addClass('javascript');
-});
-
-// fast cart pop-up
-var fastCart = function(subject){
-	var gotoProd = false;
-
-	if( subject.prop('tagName') == 'A' ) // LINK
-	{
-		var url = subject.attr('href');
-		var linkType = subject.is(':contains("Add To Cart")') ? "standard" : "options";
-
-		if(linkType == "standard"){
-			// strip protocol from url to fix cross protocol ajax access denied problem
-			url = url.replace(/^http[s]{0,1}:\/\/[^\/]*\/?/, '/');
-			url += '&fastcart=1';
-
-			$.ajax({
-				url: url,
-				dataType: 'json',
-				success: function(data)	{
-					if (data.success) {
-						openFastCart(data.imodal);
-					}
-					else if (data.redirect) {
-						window.location.href = data.redirect;
-					}
-				}
-			});
-		}else{
-			gotoProd = true;
-		}
-	}
-	else if( subject.prop('tagName') == 'FORM' ) // FORM
-	{
-		subject.ajaxSubmit({
-			data: {
-				fastcart: 1,
-				ajaxsubmit: 1
-			},
-			type: 'post',
-			iframe: true,
-			dataType: 'json',
-			success: function(data)	{
-				if (data.success) {
-					openFastCart(data.imodal);
-				}
-				else if (data.redirect) {
-					window.location.href = data.redirect;
-				}
-			}
-		});
-	}
-
-
-	return gotoProd;
-};
-
-var openFastCart = function(data){
-	$('#FastCart > div').html(data);
-	$("#FastCart").reveal();
-};
-
-// Fetch the value of a cookie
-function get_cookie(name) {
-	name = name += "=";
-	var cookie_start = document.cookie.indexOf(name);
-	if(cookie_start > -1) {
-		cookie_start = cookie_start+name.length;
-		cookie_end = document.cookie.indexOf(';', cookie_start);
-		if(cookie_end == -1) {
-			cookie_end = document.cookie.length;
-		}
-		return unescape(document.cookie.substring(cookie_start, cookie_end));
-	}
-}
-
-// Set a cookie
-function set_cookie(name, value, expires)
-{
-	if(!expires) {
-		expires = "; expires=Wed, 1 Jan 2020 00:00:00 GMT;"
-	} else {
-		expire = new Date();
-		expire.setTime(expire.getTime()+(expires*1000));
-		expires = "; expires="+expire.toGMTString();
-	}
-	document.cookie = name+"="+escape(value)+expires;
-}
-
-/* Javascript functions for the products page */
-var num_products_to_compare = 0;
-var product_option_value = "";
-
-function CheckQuantityLimits (form)
-{
-	var qty = parseInt($('#qty_').val(), 10);
-
-	if (!qty) {
-		// If text fields are being used for 'quantity' we need to get this value instead:
-		qty = parseInt($('#text_qty_').val(), 10);
-	}
-
-	if (qty < productMinQty) {
-		alert(lang.ProductMinQtyError);
-		return false;
-	}
-
-	if (qty > productMaxQty) {
-		alert(lang.ProductMaxQtyError);
-		return false;
-	}
-
-	return true;
-}
-
-function CheckProductConfigurableFields(form)
-{
-	var requiredFields = $('.FieldRequired');
-	var valid = true;
-	requiredFields.each(function() {
-		var namePart = this.name.replace(/^.*\[/, '');
-		var fieldId = namePart.replace(/\].*$/, '');
-
-		if(this.type=='checkbox' ) {
-			if(!this.checked) {
-				valid = false;
-				alert(lang.EnterRequiredField);
-				this.focus();
-				return false;
-			}
-		} else if(this.value == '') {
-			if(this.type != 'file' || (this.type == 'file' && document.getElementById('CurrentProductFile_'+fieldId).value == '')) {
-				valid = false;
-				alert(lang.EnterRequiredField);
-				this.focus();
-				return false;
-			}
-		}
-	});
-
-	var fileFields = $(form).find("input[name^='ProductField']:file");
-	fileFields.each(function() {
-		if(this.value != '') {
-			var namePart = this.name.replace(/^.*\[/, '');
-			var fieldId = namePart.replace(/\].*$/, '');
-			var fileTypes = document.getElementById('ProductFileType_'+fieldId).value;
-
-			fileTypes = ','+fileTypes.replace(' ', '').toLowerCase()+','
-			var ext = this.value.replace(/^.*\./, '').toLowerCase();
-
-			if(fileTypes.indexOf(','+ext+',') == -1) {
-				alert(lang.InvalidFileTypeJS);
-				this.focus();
-				this.select();
-				valid = false;
-			}
-
-		}
-	});
-
-	return valid;
-}
-
-function check_add_to_cart(form, required) {
-	var valid = true;
-	var qtyInputs = $(form).find('input.qtyInput');
-	qtyInputs.each(function() {
-		if(isNaN($(this).val()) || $(this).val() <= 0) {
-			alert(lang.InvalidQuantity);
-			this.focus();
-			this.select();
-			valid = false;
-			return false;
-		}
-	});
-	if(valid == false) {
-		return false;
-	}
-
-	if(!CheckProductConfigurableFields(form)) {
-		return false;
-	}
-
-	// validate the attributes
-	var attributesValidated = $('#productDetailsAddToCartForm')
-		.validate()
-		.form();
-
-	if (!attributesValidated) {
-		return false;
-	}
-
-	if (!CheckQuantityLimits(form)) {
-		return false;
-	}
-
-	if(required && !$(form).find('.CartVariationId').val()) {
-		alert(lang.OptionMessage);
-		var select = $(form).find('select').get(0);
-		if(select) {
-			select.focus();
-		}
-		var radio = $(form).find('input[type=radio]').get(0);
-		if(radio) {
-			radio.focus();
-		}
-		return false;
-	}
-
-	if (!CheckEventDate()) {
-		return false;
-	}
-
-	// if we're using the fastcart, pop that up now
-	if (config.FastCart) {
-		return fastCart($(form));
-	}
-
-	return true;
-}
-
-function compareProducts(compare_path) {
-	var pids = "";
-
-	if($('form').find('input[name=compare_product_ids]:checked').size() >= 2) {
-		var cpids = document.getElementsByName('compare_product_ids');
-
-		for(i = 0; i < cpids.length; i++) {
-			if(cpids[i].checked)
-				pids = pids + cpids[i].value + "/";
-		}
-
-		pids = pids.replace(/\/$/, "");
-		document.location.href = compare_path + pids;
-		return false;
-	}
-
-	alert(lang.CompareSelectMessage);
-	return false;
-}
-
-function product_comparison_box_changed(state) {
-	// Increment num_products_to_compare - needs to be > 0 to submit the product comparison form
-
-
-	if(state)
-		num_products_to_compare++;
-	else
-		if (num_products_to_compare != 0)
-			num_products_to_compare--;
-}
-
-function remove_product_from_comparison(id) {
-	if(num_compare_items > 2) {
-		for(i = 1; i < 11; i++) {
-			document.getElementById("compare_"+i+"_"+id).style.display = "none";
-		}
-
-		num_compare_items--;
-	}
-	else {
-		alert(lang.CompareTwoProducts);
-	}
-}
-
-(function($){
-	$.fn.captchaPlaceholder = function () {
-		$(this).each(function(){
-			var $$ = $(this);
-
-			if (!$$.parent().is(':visible')) {
-				// don't do anything if this placeholder isn't visible
-				return;
-			}
-
-			var img = $$.find('.captchaImage');
-			if (img.length) {
-				// don't do anything if an image is already in the dom
-				return;
-			}
-
-			var rand = Math.round(500 + Math.random() * 7500);
-			img = $('<img class="captchaImage" src="' + config.ShopPath + '/captcha.php?' + rand + '" />');
-			$$.append(img);
-		});
-
-		return this;
-	};
-})(jQuery);
-
-function g(id) {
-	return document.getElementById(id);
-}
-
-function check_product_review_form() {
-	var revrating = g("revrating");
-	var revtitle = g("revtitle");
-	var revtext = g("revtext");
-	var revfromname = g("revfromname");
-	var captcha = g("captcha");
-
-	if(revrating.selectedIndex == 0) {
-		alert(lang.ReviewNoRating);
-		revrating.focus();
-		return false;
-	}
-
-	if(revtitle.value == "") {
-		alert(lang.ReviewNoTitle);
-		revtitle.focus();
-		return false;
-	}
-
-	if(revtext.value == "") {
-		alert(lang.ReviewNoText);
-		revtext.focus();
-		return false;
-	}
-
-	if(captcha.value == "" && HideReviewCaptcha != "none") {
-		alert(lang.ReviewNoCaptcha);
-		captcha.focus();
-		return false;
-	}
-
-	return true;
-}
-
-function check_small_search_form() {
-	var search_query = g("search_query");
-
-	if(search_query.value == "") {
-		search_query.focus();
-		return false;
-	}
-
-	return true;
-}
-
-function setCurrency(currencyId)
-{
-	var gotoURL = location.href;
-
-	if (location.search !== '')
-	{
-		if (gotoURL.search(/[&|\?]setCurrencyId=[0-9]+/) > -1)
-			gotoURL = gotoURL.replace(/([&|\?]setCurrencyId=)[0-9]+/, '$1' + currencyId);
-		else
-			gotoURL = gotoURL + '&setCurrencyId=' + currencyId;
-	}
-	else
-		gotoURL = gotoURL + '?setCurrencyId=' + currencyId;
-
-	location.href = gotoURL;
-}
-
-
-// Dummy sel_panel function for when design mode isn't enabled
-function sel_panel(id) {}
-
-function inline_add_to_cart(filename, product_id, quantity, returnTo) {
-	if(typeof(quantity) == 'undefined') {
-		var quantity = '1';
-	}
-	var html = '<form action="' + filename + '/cart.php" method="post" id="inlineCartAdd">';
-	if(typeof(returnTo) != 'undefined' && returnTo == true) {
-		var returnLocation = window.location;
-		html += '<input type="hidden" name="returnUrl" value="'+escape(returnLocation)+'" />';
-	}
-	html += '<input type="hidden" name="action" value="add" />';
-	html += '<input type="hidden" name="qty" value="'+quantity+'" />';
-	html += '<input type="hidden" name="product_id" value="'+product_id+'" />';
-	html += '<\/form>';
-   $('body').append(html);
-   $('#inlineCartAdd').submit();
-}
-
-function ShowPopupHelp(content, url, decodeHtmlEntities) {
-	var popupWindow = open('', 'view','height=450,width=550');
-
-	if(decodeHtmlEntities) {
-		content = HtmlEntityDecode(content);
-	}
-	if (window.focus) {
-		popupWindow.focus();
-	}
-
-	var doc = popupWindow.document;
-	doc.write(content);
-	doc.close();
-
-	return false;
-}
-
-function HtmlEntityDecode(str) {
-   try {
-	  var tarea=document.createElement('textarea');
-	  tarea.innerHTML = str; return tarea.value;
-	  tarea.parentNode.removeChild(tarea);
-   } catch(e) {
-	  //for IE add <div id="htmlconverter" style="display:none;"></div> to the page
-	  document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
-	  var content = document.getElementById("innerConverter").value;
-	  document.getElementById("htmlconverter").innerHTML = "";
-	  return content;
-   }
-}
-
-// Dummy JS object to hold language strings.
-if (typeof lang == 'undefined') { lang = {}; }
-
-/**
-* A javascript equivalent of server-side getLang method with replacements support. The specified language entry must be
-* present in the lang object. Returns a blank string if it is not.
-*
-* Usage:
-* getLang('ProductMinQtyError', { qty: 10, product: 'Test Product' }); // pass the name of the language entry
-*
-* @param string name
-* @param object replacements
-* @return string
-*/
-function getLang (name, replacements)
-{
-	if (!lang[name]) {
-		return '';
-	}
-
-	var string = lang[name];
-	if (typeof replacements != 'object') {
-		return string;
-	}
-
-	$.each(replacements, function(needle, haystack){
-		string = string.replace(':' + needle, haystack);
-	});
-
-	return string;
-}
-
-// IE 6 doesn't support the :hover selector on elements other than links, so
-// we use jQuery to work some magic to get our hover styles applied.
-if(document.all) {
-	var isIE7 = /*@cc_on@if(@_jscript_version>=5.7)!@end@*/false;
-	if(isIE7 == false) {
-		$(document).ready(function() {
-			$('.ProductList li').hover(function() {
-				$(this).addClass('Over');
-			},
-			function() {
-				$(this).removeClass('Over');
-			});
-			$('.ComparisonTable tr').hover(function() {
-				$(this).addClass('Over');
-			},
-			function() {
-				$(this).removeClass('Over');
-			});
-		});
-	}
-	$('.ProductList li:last-child').addClass('LastChild');
-}
-
-function ShowLoadingIndicator() {
-	if (typeof(disableLoadingIndicator) != 'undefined' && disableLoadingIndicator) {
-		return;
-	}
-	var width = $(window).width();
-	var position = $('#Container').css('position');
-	if (position == 'relative') {
-		width = $('#Container').width();
-	}
-
-	var scrollTop;
-	if(self.pageYOffset) {
-		scrollTop = self.pageYOffset;
-	}
-	else if(document.documentElement && document.documentElement.scrollTop) {
-		scrollTop = document.documentElement.scrollTop;
-	}
-	else if(document.body) {
-		scrollTop = document.body.scrollTop;
-	}
-	//$('#AjaxLoading').css('position', 'absolute');
-	//$('#AjaxLoading').css('top', scrollTop+'px');
-	//$('#AjaxLoading').css('left', parseInt((width-150)/2)+"px");
-	$('#AjaxLoading').show();
-}
-
-function HideLoadingIndicator() {
-	$('#AjaxLoading').hide();
-}
-
-
-
-function fastCartAction(event) {
-	var url = '';
-
-	var modalOptions;
-
-	// Supplied URL
-	if (typeof(event) == 'string') {
-		var url = event;
-
-		// Make sure a valid URL was supplied
-		if (!url || url.indexOf('cart.php') == -1) {
-			return false;
-		}
-
-		// strip protocol from url to fix cross protocol ajax access denied problem
-		url = url.replace(/^http[s]{0,1}:\/\/[^\/]*\/?/, '/');
-		url += '&fastcart=1';
-
-		$.ajax({
-			url: url,
-			dataType: 'json',
-			success: function(data)	{
-				if (data.success) {
-					modalOptions = {
-						data: data
-					};
-					_showFastCart(modalOptions);
-				}
-				else if (data.redirect) {
-					window.location.href = data.redirect;
-				}
-			}
-		});
-	}
-	// 'Add' button on product details page
-	else {
-		$('#productDetailsAddToCartForm').ajaxSubmit({
-			data: {
-				fastcart: 1,
-				ajaxsubmit: 1
-			},
-			type: 'post',
-			iframe: true,
-			dataType: 'json',
-			success: function(data)	{
-				if (data.success) {
-					modalOptions = {
-						data: data
-					};
-					_showFastCart(modalOptions);
-				}
-				else if (data.redirect) {
-					window.location.href = data.redirect;
-				}
-			}
-		});
-	}
-
-	return false;
-}
-
-function _showFastCart(modalOptions) {
-	modalOptions = $.extend({
-		width: 700,
-		closeTxt: true,
-		onShow: function() {
-			$("#fastCartSuggestive a[href*='cart.php?action=add']").unbind('click');
-
-			var itemTxt = $('#fastCartNumItemsTxt').html();
-			if (itemTxt) {
-				// update the view cart item count on top menu
-				$('.CartLink span').html('(' + itemTxt + ')');
-			}
-			//setProductListHeights(null, '.fastCartContent');
-			$('.fastCartContent .ProductList:not(.List) li').width(ThumbImageWidth);
-		},
-		onClose: function() {
-			if (window.location.href.match(config.ShopPath + '/cart.php')) {
-				// reload if we are on the cart page
-				$('#ModalContainer').remove();
-				window.location = window.location.href
-			} else {
-				$('#ModalContainer').remove();
-			}
-		}
-	}, modalOptions);
-
-	$.iModal.close();
-	$.iModal(modalOptions);
-}
-
-/**
-* Adds a script tag to the DOM that forces a hit to tracksearchclick. Should be called by a mousedown event as calling it by a click event can sometimes be cancelled by the browser navigating away from the page.
-*/
-function isc_TrackSearchClick (searchId) {
-	if (!searchId) {
-		return;
-	}
-
-	$('#SearchTracker').remove();
-
-	var trackurl = 'search.php?action=tracksearchclick&searchid=' + encodeURIComponent(searchId) + '&random=' + Math.random();
-
-	var script = document.createElement('script');
-	script.type = "text/javascript";
-	script.src = trackurl;
-	script.id = "SearchTracker";
-
-	window.document.body.appendChild(script);
-}
-
-$(document).ready(function() {
-	
-
-	$('html').ajaxStart(function() {
-		ShowLoadingIndicator();
-	});
-
-	$('html').ajaxComplete(function() {
-		HideLoadingIndicator();
-	});
-
-	// generic checkbox => element visibility toggle based on id of checkbox and class names of other elements
-	$('.CheckboxTogglesOtherElements').live('change', function(event){
-		if (!this.id) {
-			return;
-		}
-
-		var className = 'ShowIf_' + this.id + '_Checked';
-		var elements = $('.' + className);
-
-		if (this.checked) {
-			// easy, show matching elements
-			elements.show();
-			return;
-		}
-
-		// if not checked it's a little more tricky -- only hide elements if they are not showing for multiple check boxes
-		var classExpression = /^ShowIf_(.+)_Checked$/;
-		elements.each(function(){
-			var $$ = $(this);
-
-			// before hiding this element, check its classes to see if it has another ShowIf_?_Checked - if it does, see if that class points to a checked box
-			var classes = $$.attr('class').split(/\s+/);
-			var checked = false;
-			$.each(classes, function(key,value){
-				if (value === className) {
-					// we're processing this class already so we know it's unchecked - ignore it
-					return;
-				}
-
-				var result = classExpression.exec(value);
-				if (result === null) {
-					// not a ShowIf_?_Class
-					return;
-				}
-
-				var id = result[1];
-				if ($('#' + id ).attr('checked')) {
-					// found a checked box
-					checked = true;
-					return false;
-				}
-			});
-
-			if (!checked) {
-				// found no checkbox that should be keeping this element visible
-				$$.hide();
-			}
-		});
-
-	}).change();
-});
-
-/**
- * Add a method to the Date object prototype to set the full
- * year using an ISO 8601 format string.
- *
- * Usage:
- * var d = new Date();
- * d.setISO('1980-01-08');
- */
-if (typeof Date.prototype.setISO == 'undefined') {
-	Date.prototype.setISO = function (isoFmt) {
-		var dtparts = isoFmt.split('-');
-		this.setFullYear(dtparts[0], dtparts[1] - 1, dtparts[2]);
-	};
-}
-
-/**
- * This disables the process payment button. It's here because otherwise it'd require a template
- * change to about 20 files.
- */
-$('form[action$="process_payment"]').live('submit', function(ev){
-	if (ev.isDefaultPrevented()) {
-		return;
-	}
-    
-    var submitFunc = this.onsubmit;
-    if(submitFunc && submitFunc() == false){
-        ev.preventDefault();
-        return;
-    }
-
-	var self = this,
-		disabler = function () {
-			$('input[type="submit"]', self)
-				.val("Processing Your Order...")
-				.attr('disabled', 'disabled');
-		};
-
-	// for opera, just submit straight away. opera doesn't process the timeout (ie. js/events) after navigation.
-	if ($.browser.opera) {
-		disabler();
-	} else {
-		// IE flavours need a timeout to allow submit button disabling.
-		setTimeout(disabler, 1);
-	}
-});
-
-// TODO: rewirte this
-$('#OrderConfirmationForm').live('submit', function(ev){
-	if (ev.isDefaultPrevented()) {
-		return;
-	}
-    var submitFunc = this.onsubmit;
-    if(submitFunc && submitFunc() == false){
-        ev.preventDefault();
-        return;
-    }
-	var self = this,
-	disabler = function () {
-		$('#bottom_payment_button', self)
-		.attr('disabled', 'disabled');
-	};
-
-	// for opera, just submit straight away. opera doesn't process the timeout (ie. js/events) after navigation.
-	if ($.browser.opera) {
-		disabler();
-	} else {
-		// IE flavours need a timeout to allow submit button disabling.
-		setTimeout(disabler, 1);
-	}
-});
-
-function htmlspecialchars_decode (string, quote_style) {
-    // http://kevin.vanzonneveld.net
-    // +   original by: Mirek Slugen
-    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
-    // +   bugfixed by: Mateusz "loonquawl" Zalega
-    // +      input by: ReverseSyntax
-    // +      input by: Slawomir Kaniecki
-    // +      input by: Scott Cariss
-    // +      input by: Francois
-    // +   bugfixed by: Onno Marsman
-    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
-    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
-    // +      input by: Ratheous
-    // +      input by: Mailfaker (http://www.weedem.fr/)
-    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
-    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
-    // *     example 1: htmlspecialchars_decode("<p>this -&gt; &quot;</p>", 'ENT_NOQUOTES');
-    // *     returns 1: '<p>this -> &quot;</p>'
-    // *     example 2: htmlspecialchars_decode("&amp;quot;");
-    // *     returns 2: '&quot;'
-    var optTemp = 0,
-        i = 0,
-        noquotes = false;
-    if (typeof quote_style === 'undefined') {
-        quote_style = 2;
-    }
-    string = string.toString().replace(/&lt;/g, '<').replace(/&gt;/g, '>');
-    var OPTS = {
-        'ENT_NOQUOTES': 0,
-        'ENT_HTML_QUOTE_SINGLE': 1,
-        'ENT_HTML_QUOTE_DOUBLE': 2,
-        'ENT_COMPAT': 2,
-        'ENT_QUOTES': 3,
-        'ENT_IGNORE': 4
-    };
-    if (quote_style === 0) {
-        noquotes = true;
-    }
-    if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags
-        quote_style = [].concat(quote_style);
-        for (i = 0; i < quote_style.length; i++) {
-            // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4
-            if (OPTS[quote_style[i]] === 0) {
-                noquotes = true;
-            } else if (OPTS[quote_style[i]]) {
-                optTemp = optTemp | OPTS[quote_style[i]];
-            }
-        }
-        quote_style = optTemp;
-    }
-    if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {
-        string = string.replace(/&#0*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should
-        // string = string.replace(/&apos;|&#x0*27;/g, "'"); // This would also be useful here, but not a part of PHP
-    }
-    if (!noquotes) {
-        string = string.replace(/&quot;/g, '"');
-    }
-    // Put this in last place to avoid escape being double-decoded
-    string = string.replace(/&amp;/g, '&');
-
-    return string;
-}
-
-/**
- * Converts price in string format back to numeric value
- * eg. '$99.99 AUD' -> 99.99
- * @param string price -- price in the string format with possible currency 
- * indicators and separators
- */
-function convertPriceStringToNumber(price){
-	return Number(price.replace(/[^0-9\.]+/g,""));
-}
-
-/**
- * Parses a csv string of ids (eg, 1,2,3) into a array containing numeric
- * value of each id
- * @param ids
- * @param delimeter
- */
-function parseCsvIdsToNumericArray(ids,delimeter){
-	return ids.split(delimeter).map(Number);
-}
-
-
-function createCookie(name,value,days) 
-{
-	var expires = '';
-	if (days) {
-		var date = new Date();
-		date.setDate(date.getDate() + days);
-		expires = "; expires=" + date.toGMTString();
-	}
-	document.cookie = name + "=" + value + expires+"; path=/";
-}
-
-function acceptCookieUsage()
-{
-	if(document.cookie.indexOf('ACCEPT_COOKIE_USAGE') == -1){
-		$.ajax({
-			url: config.ShopPath + '/remote.php?w=getCookieNotification',
-			type: 'GET',
-			dataType: 'JSON',
-			success: function(response){
-				if(response.html != ''){
-					$('body').prepend(response.html);
-				}
-			}
-		});
-	}
-}
-
-/**
- * Changes social sharing tabs and content within sharing widget
- * @param {String} serviceId The ID of the sharing service to be used.
- * @param {Number} productId The ID of the product to be shared.
- */
-function switchSocialSharingTabs(serviceId, productId) {
-	$('.sharingTab').removeClass('active');
-	$('.' + serviceId).addClass('active');
-
-	updateShareButton(serviceId, productId);
-	updateSocialSharingPanel(productId);
-}
-
-/**
- * Get the currently active social sharing tab.
- * @return {String} The ID of the currently active social sharing service.
- */
-function activeSocialSharingServiceId()
-{
-	return $('.sharingTab.active').attr('id').replace('tab', '');
-}
-
-/**
- * Update the share button to share the given product on the given service.
- * @param {String} serviceId The service on which to share the given product.
- * @param {Number} productId The ID of the product to share.
- */
-function updateShareButton(serviceId, productId) {
-	$('.sharebutton a').attr('href', sharingData[productId][serviceId]['sharingLink']);
-}
-
-/**
- * Preload images and build the social sharing panel.
- * @param {Number} shareProductId
- */
-function initSocialSharingPanel(shareProductId)
-{
-	var productCount = objectLength(sharingData);
-	var loadedProductCount = 0;
-	$.each(sharingData, function(productId, services) {
-		var serviceCount = objectLength(services);
-		var loadedServiceCount = 0;
-		$.each(services, function(serviceId, productSharingDetails) {
-			productSharingDetails['imageElement'] = $("<img/>").attr("src", productSharingDetails['image']).attr("alt", "").one("load", function() {
-				loadedServiceCount++;
-				if (loadedServiceCount == serviceCount) {
-					loadedProductCount++;
-					if (loadedProductCount == productCount) {
-						switchSocialSharingTabs(activeSocialSharingServiceId(), shareProductId);
-					}
-					return false;
-				}
-			});
-		});
-	});
-}
-
-/**
- * Calculate the number of owned properties of an object.
- * @param object
- * @return {Number}
- */
-function objectLength(object)
-{
-	if (typeof object != "object") {
-		return 0;
-	}
-	var count = 0;
-	for (i in object) {
-		if (object.hasOwnProperty(i)) {
-			count++;
-		}
-	}
-	return count;
-}
-
-/**
- * Updates sharing panel with new product details.
- * Used when multiple products exist (eg orders) to swap the product to be shared
- * @param productId
- */
-function updateSocialSharingPanel(productId) {
-	shareProductId = productId;
-	var activeTab = activeSocialSharingServiceId();
-	$('#tabcontent .photo').empty().append(sharingData[productId][activeTab]['imageElement']);
-	$('#shareDescription').text(sharingData[productId][activeTab]['description']);
-	updateShareButton(activeTab, productId);
-	$('#shareText').text(sharingData[productId][activeTab]['shareText']);
-
-	updateSharingDataChoices(productId);
-
-	$.iModal.close();
-}
-
-function updateSharingDataChoices(productId) {
-	$('#SharingDataChoices #productlist').empty();
-	$.each(sharingData, function(index, value) {
-		if (index != productId) {
-			var productAnchor = $("<a/>").attr("href", "javascript:updateSocialSharingPanel("+index+")");
-			productAnchor.append(value[activeSocialSharingServiceId()]['imageElement']);
-			var productListItem = $("<li/>").append(productAnchor);
-			$('#SharingDataChoices #productlist').append(productListItem);
-		}
-	});
-}
-
-/**
- * View modal overlay of product image choices
- */
-function showProductChoices() {
-	$.iModal({
-		type: 'inline',
-		inline: '#ChooseAnotherProduct',
-		width: 620,
-		height: 200,
-		title: getLang('ChooseAnotherProduct')
-	});
-	
-	updateSharingDataChoices(shareProductId);
-
-	var productCount = objectLength(sharingData);
-	var sharingDataWrapper = $("#SharingDataWrapper");
-	var sharingDataChoices = $("#SharingDataChoices");
-	if (productCount < 6) {
-		sharingDataWrapper.addClass('no-scroll');
-	} else {
-		sharingDataChoices.jCarouselLite({
-			btnNext: ".next",
-			btnPrev: ".prev",
-			visible: 4,
-			scroll: 2,
-			circular: false,
-			speed: 200
-		});
-	}
-
-}
-
-(function($) {
-	if ('undefined' !== typeof $) {
-		$.ajaxSetup({ cache: true });
-	}	
-})($);
\ No newline at end of file
diff --git a/template/js/bc/product.attributes.js b/template/js/bc/product.attributes.js
deleted file mode 100755
index 96a8ef5..0000000
--- a/template/js/bc/product.attributes.js
+++ /dev/null
@@ -1,1146 +0,0 @@
-(function($){
-	// this closure contains option-type-specific plugins for display enhancement and validation
-
-	if (typeof String.prototype.pad == 'undefined') {
-		String.PAD_TYPE_LEFT = 0;
-		String.PAD_TYPE_RIGHT = 1;
-
-		String.prototype.pad = function (length, string, type) {
-			if (type === undefined) {
-				type = String.PAD_TYPE_RIGHT;
-			}
-
-			if (this.length >= length) {
-				// don't run padding code if the string is long enough already
-				return String(this);
-			}
-
-			var difference = length - this.length,
-				padding = '';
-
-			// repeat the string until we have all the padding we need
-			while (padding.length < difference) {
-				padding += string;
-			}
-
-			// pad the original string on the correct side
-			if (type == String.PAD_TYPE_RIGHT) {
-				return String(this) + padding.substr(0, difference);
-			}
-
-			return padding.substr(0, difference) + String(this);
-		};
-	}
-
-	if (typeof Number.prototype.pad == 'undefined') {
-		Number.prototype.pad = function (length, string, type) {
-			return String(this).pad(length, string, type);
-		};
-	}
-
-	/**
-	 * Mobile screen dimmer- For mobile devices create a dimmer
-	 * object to show and hide the screen dimmer overlay.
-	 *
-	 * Usage:
-	 * dimmer.show(onClickCallback);
-	 * dimmer.hide()
-	 */
-	if(typeof config == 'object' && config.isMobile){
-		var dimmer = function(){
-			var clickHandler = null;
-			var dimmer = null;
-
-			if($('#Dimmer').length == 0){
-				$('body')
-					.children()
-					.first()
-						.before('<div id="Dimmer" style="display:none"></div>');
-			}
-
-			dimmer = $('#Dimmer');
-
-			dimmer.click(function(){
-				clickHandler();
-			});
-
-			return {
-				show: function(handler) {
-					clickHandler = handler;
-
-					dimmer
-						.height($('body').height())
-						.show();
-				},
-
-				hide: function() {
-					dimmer.hide();
-				}
-			}
-		}();
-	}
-
-	$(function(){
-		// mark the add to cart form as being handled by jquery.validate
-		$('#productDetailsAddToCartForm').validate({
-			onsubmit: false,
-			ignoreTitle: true,
-			showErrors: function (errorMap, errorList) {
-				// nothing
-			},
-			invalidHandler: function (form, validator) {
-				if (!validator.size()) {
-					return;
-				}
-
-				alert(validator.errorList[0].message);
-			}
-		});
-	});
-
-	$.fn.updateProductDetails = function (options) {
-		options = $.extend({
-			baseImage: '',
-			baseThumb: ''
-		}, options);
-
-		return this.each(function(){
-			var $this = $(this),
-				showAddCartButton = options.price !== undefined && options.instock && options.purchasable;
-			var ShowAddToCartQtyBox = (typeof ShowAddToCartQtyBox) != 'undefined' ? ShowAddToCartQtyBox : false;
-
-            var defaults = {
-                findProductAttributeId: function(el) {
-                    return el.name;
-                },
-                isInStock: function(el) {
-                    return false;
-                },
-                hide_option: function(el, inStock, options) {
-                    $(el).parents('li:first').toggle(inStock);
-                },
-                label_option: function(el, inStock, options) {
-                    $(el).closest('label').toggleClass('outStock', !inStock);
-                }
-            };
-
-            // enable out of stock status update
-            $this.productOptionViewRadioOutOfStock(options, defaults);
-            $this.productOptionViewRectangleOutOfStock(options, defaults);
-            $this.productOptionViewPickListSwatchOutOfStock(options, defaults);
-            $this.productOptionViewProductPickListOutOfStock(options, defaults);
-            $this.productOptionViewSelectOutOfStock(options);
-
-            // hide/show the add to cart button based on price and stock
-			$this.find('.AddCartButton')
-				.closest('.DetailRow')
-					.toggle(showAddCartButton);
-
-            // hide/show the add to cart button on QuickView
-            $this.find('.addToCart input').toggle(showAddCartButton)
-                .next().toggle(showAddCartButton);
-
-
-			// hide/show the cart qty box too incase it's been moved? (product.functions.js did this)
-			$this.find('.ShowAddToCartQtyBox')
-				.toggle(showAddCartButton && ShowAddToCartQtyBox);
-
-			// out of stock message
-			$this.find('.OutOfStockMessage')
-				.toggle(!showAddCartButton);
-
-			if (options.purchasingMessage !== undefined) {
-				$this.find('.OutOfStockMessage')
-					.text(options.purchasingMessage);
-			}
-
-			// hide/show stock level
-			$this.find('.VariationProductInventory')
-				.closest('.DetailRow')
-					.toggle((options.stockMessage || options.stock) !== undefined)
-					.end()
-				.text(options.stockMessage || options.stock);
-
-			// hide/show weight
-			$this.find('.VariationProductWeight')
-				.text(options.weight === undefined ? '' : options.weight)
-				.closest('.DetailRow')
-					.toggle(options.weight !== undefined);
-
-			// hide/show sku
-			$this.find('.VariationProductSKU')
-				.text(options.sku === undefined ? '' : options.sku)
-				.closest('.DetailRow')
-					.toggle(options.sku !== undefined);
-
-			// hide/show price - slightly more complex code due to control panel sharing
-			$this.find('.VariationProductPrice').each(function(){
-				var $this = $(this);
-
-				if ($this.is('input')) {
-					// if the price is an input then set its raw value
-					$this.val(options.unformattedPrice === undefined ? '' : options.unformattedPrice);
-					return;
-				}
-
-				// otherwise use regular hide/show formatted behaviour
-				$this.html(options.price === undefined ? '' : options.price)
-					.closest('.DetailRow')
-						.toggle(options.price !== undefined);
-			});
-
-			// price label
-			if (options.priceLabel !== undefined) {
-				$this.find('.PriceRow .Label').text(options.priceLabel);
-			}
-
-			// hide/show savings
-			$this.find('.YouSaveAmount')
-				.text(options.saveAmount === undefined ? '' : options.saveAmount);
-
-			$this.find('.YouSave, .RetailPrice')
-				.toggle(options.saveAmount !== undefined);
-
-			$this.find('.RetailPrice .Value')
-				.html(options.saveAmount === undefined || options.rrp === undefined ? '' : options.rrp);
-
-			var zoom, thumb;
-
-			if (options.imageRuleId !== undefined && options.image !== undefined && options.thumb !== undefined) {
-				// image was supplied and is different from the base image
-				zoom = options.image;
-				thumb = options.thumb;
-				ShowVariationThumb = options.imageRuleId; // hack to re-use existing lightbox code
-			} else if (options.baseImage !== undefined && options.baseThumb !== undefined) {
-				// show the base image
-				zoom = options.baseImage;
-				thumb = options.baseThumb;
-				ShowVariationThumb = false;
-			} else {
-				// no image provided at all?
-				ShowVariationThumb = false;
-			}
-
-			if (zoom && thumb) {
-				$('.main-image').attr('src',zoom);
-				$('.zoomie-window').css('background-image','url('+zoom+')');
-				
-                if(window['removeTinyImageHighlight'] && window['replaceProductImageInZoom']) {
-                    removeTinyImageHighlight();
-                    replaceProductImageInZoom(zoom, thumb);
-                }
-			} else {
-				$this.find('.ProductThumbImage').hide();
-			}
-		});
-	};
-
-	/**
-	* This plugin implements behaviours applicable to all option types which can trigger sku / rule effects (change of
-	* price, weight, image, etc.)
-	*/
-	$.fn.productOptionRuleCondition = function (options) {
-		return this.each(function(){
-			$(this)
-				.addClass('productAttributeRuleCondition')
-				.find(':input')
-				.change(function(){
-					// ask the server for any updated product information based on current options - can't use
-					// ajaxSubmit here because it will try to send files too so use serializeArray and put our custom
-					// 'w' parameter into it
-
-                    // we want to enable out-of-stock notification for all 3 (product detail, quickview and cart) pages
-                    // and for some historical reasons they all have different html structure
-                    // (eg, cart page dosn't have #productDetailsAddToCartFrom form)
-                    // therefore we need to find the correct form to serialize
-                    // rather than doing massive template upgrades
-                    var data = null;
-                    if($('#productDetailsAddToCartForm').length) {
-                        var data = $('#productDetailsAddToCartForm').serializeArray();
-                    } else {
-                        var data = $('.productAttributeList:first').closest('form').serializeArray();
-                    }
-
-					data.push({
-						name: 'w',
-						value: 'getProductAttributeDetails'
-					});
-
-					data = $.param(data);
-
-					$.ajax({
-						url: config.AppPath + '/remote.php',
-						type: 'POST',
-						dataType: 'json',
-						data: data,
-						success: function (response) {
-							if (response.success && response.details) {
-                                if($('#ProductDetails').length) {
-                                    $('#ProductDetails').updateProductDetails(response.details);
-                                }
-                                else {
-                                    $('.productAttributeList:first').updateProductDetails(response.details);
-                                }
-							}
-						}
-					});
-				});
-		});
-	};
-
-	/**
-	* This plugin implements behaviours applicable to all configurable option types (validation, etc.).
-	*/
-	$.fn.productOptionConfigurable = function (options) {
-		if (options.condition) {
-			this.productOptionRuleCondition(options);
-		}
-
-		return this.each(function(){
-			var target = $(this).find('.validation').eq(0); // only select the first matching target (for radios)
-			if (!target.length) {
-				// could not find validation target - validate plugin doesn't like being passed an empty jquery result
-				return;
-			}
-
-			if (options.required) {
-				target.rules('add', {
-					required: true,
-					messages: {
-						required: options.validation.required
-					}
-				});
-			}
-		});
-	};
-
-	/**
-	* This plugin implements a generic product options behaviour which marks a parent element of the currently selected
-	* choice with a 'selectedValue' class for easy css-based highlighting.
-	*/
-	$.fn.productOptionSelectedValue = function (options) {
-		options = $.extend({
-			container: 'li'
-		}, options || {});
-
-		return this.each(function(){
-			var $this = $(this);
-
-			// when selecting an input, apply a css class to it's parent list item
-            $this.delegate('input', 'click', function(event){
-                var isSelected = $(this).closest(options.container).hasClass('selectedValue');
-                if(isSelected) {
-                    // unselect the already selected one and
-                    // trigger the change event to update out-of-stock status
-                    $(this).prop('checked', false);
-                    $(this).change();
-                }
-                else {
-                    // change of selection, marked all as unselected
-                    $this.find(options.container).removeClass('selectedValue');
-                }
-                $(this).closest(options.container).toggleClass('selectedValue');
-            });
-
-			// apply on page load too incase something is pre-selected
-			$this.find(':checked')
-				.closest(options.container)
-					.addClass('selectedValue');
-		});
-	};
-
-	/**
-	* This plugin implements a generic product options behaviour which provides a small preview / zoom window for
-	* swatches and images.
-	*/
-	$.fn.productOptionPreviewDisplay = function (options) {
-
-		// disabled for mobile devices
-		if (typeof config == 'object' && config.isMobile){
-			return;
-		}
-
-		var previewDisplay = $('.productOptionPreviewDisplay');
-
-		if (!previewDisplay.size()) {
-			previewDisplay = $('<div class="productOptionPreviewDisplay" />').appendTo('body');
-		}
-
-		$(this).delegate('.showPreview', 'mouseenter', function(){
-			// put preview content into the display container
-			var previewContent = $(this)
-				.closest('.hasPreview')
-					.find('.previewContent');
-
-			if (!previewContent.size()) {
-				return;
-			}
-
-			previewDisplay.empty();
-
-			previewContent.children()
-				.clone()
-				.find('.showPreview')
-					.removeClass('.showPreview')
-					.end()
-				.appendTo(previewDisplay);
-
-			var offset = $(this).offset();
-
-			// position and show the display
-			previewDisplay
-				.css({
-					top: offset.top + $(this).outerHeight() + 'px',
-					left: offset.left + $(this).outerWidth() + 'px'
-				})
-				.stop(true, true)
-				.fadeIn();
-		});
-
-		$(this).delegate('.showPreview', 'mouseleave', function(){
-			// hide the display
-			previewDisplay
-				.stop(true, true)
-				.fadeOut();
-		});
-
-		return this;
-	};
-
-	/**
-	* This plugin implements behaviours for pick-list types rendering as radio inputs.
-	*/
-	$.fn.productOptionViewRadio = function (options) {
-		this.productOptionSelectedValue(options);
-		return this;
-	};
-
-	/**
-	* This plugin implements behaviours for pick-list types rendering as rectangle inputs.
-	*/
-	$.fn.productOptionViewRectangle = function (options) {
-		this.productOptionSelectedValue(options);
-		return this.each(function(){
-			// deselect the radio element when clicking on rectangles as the radio element itself isn't visible
-			$(this).delegate('input', 'click', function(){
-				$(this).blur();
-			});
-		});
-	};
-
-    $.fn.productOptionViewOutOfStock = function(options, view) {
-
-        // since out-of-stock feature is feature flagged
-        // check the existence of those oos specific parameters before doing any real work
-        if(typeof(options.selectedAttributeValues) == 'undefined' || typeof(options.inStockAttributeValues) == 'undefined') {
-            return true;
-        }
-
-        $.each(this.find('.productAttributeRow'), function(index, row) {
-
-            if($(row).find('.productAttributeLabel').find('.required:visible').length == 0) {
-                // not mandatory option should not be part of SKU
-                // and should be ignored
-                return true;
-            }
-
-            $.each($(row).find('.productAttributeValue').find(view.selector), function(index, el) {
-                var productAttributeId = view.findProductAttributeId(el);
-                var matches = productAttributeId.match(/attribute\[(\d+)\]/);
-                productAttributeId = parseInt(matches[1], 10);
-                var selectedValue = options.selectedAttributeValues[productAttributeId];
-                var currentValue = parseInt(el.value, 10);
-
-                if ($.inArray(currentValue, options.inStockAttributeValues) !== -1 || view.isInStock(el)) {
-                    view[options.optionOutOfStockBehavior](el, true, options);
-                } else {
-                    view[options.optionOutOfStockBehavior](el, false, options);
-                }
-          });
-        });
-    };
-
-    /**
-     * This plugin implements behavior for Radio View
-     * to handle out-of-stock status update
-     */
-    $.fn.productOptionViewRadioOutOfStock = function(options, defaults) {
-        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
-            selector: '.productOptionViewRadio input',
-            label_option: function(el, inStock, options) {
-                $(el).closest('label').toggleClass('outStock', !inStock);
-                $(el).closest('label').find('span.name').toggleOutStockText(options, inStock);
-            }})
-        );
-    };
-
-    /**
-     * This plugin implements behavior for Rectangle View
-     * to handle out-of-stock status update
-     */
-    $.fn.productOptionViewRectangleOutOfStock = function(options, defaults) {
-        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
-            selector: '.productOptionViewRectangle input'
-            })
-        );
-    };
-
-    /**
-     * This plugin implements behavior for Swatch View
-     * to handle out-of-stock status update
-     */
-    $.fn.productOptionViewPickListSwatchOutOfStock = function(options, defaults) {
-        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
-            selector: '.productOptionPickListSwatch input'
-            })
-        );
-    };
-
-    /**
-     * This plugin implements behavior for Product List
-     * to handle out-of-stock status update
-     */
-    $.fn.productOptionViewProductPickListOutOfStock = function(options, defaults) {
-        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
-            selector: '.productOptionViewProductPickList input, .productOptionViewProductPickListWithImage input',
-            hide_option: function(el, inStock, options) {
-                $(el).parents('tr:first').toggle(inStock);
-            },
-            label_option: function(el, inStock, options) {
-                $(el).closest('label').toggleClass('outStock', !inStock);
-                $(el).siblings('span').toggleOutStockText(options, inStock);
-            }})
-        );
-    };
-
-    /**
-     * This plugin implements behavior for select/dropdown pick-list types
-     * to handle out-of-stock status update
-     */
-    $.fn.productOptionViewSelectOutOfStock = function(options) {
-        this.productOptionViewOutOfStock(options, {
-            selector: 'option',
-            findProductAttributeId: function(el) {
-                return $(el).parents('select:first').prop('name');
-            },
-            isInStock: function(el) {
-                // select/dropdown has a default please choose a option
-                // which should always be considered in-stock option value
-                return el.value === '';
-            },
-            hide_option: function(el, inStock, options) {
-                var select = $(el).closest('select');
-                if (select.is(':disabled')) {
-                    // get the real select element
-                    select = select.data('linkedSelectElement');
-                }
-                // save the currently selected value
-                var val = select.val();
-                $(el).toggleOption(inStock);
-                // apply the previously selected value
-                select.val(val);
-                // ensure the label matches the selected options text
-                select.siblings('span').text(select.find(':selected').text());
-            },
-            label_option: function(el, inStock, options) {
-                $(el).toggleOutStockText(options, inStock);
-            }
-        });
-    };
-
-    $.fn.toggleOutStockText = function(options, inStock) {
-        if (options.outOfStockMessage) {
-            var text = $(this).text();
-            if(inStock) {
-                $(this).text(text.replace(' ('+options.outOfStockMessage+')', ''));
-            }
-            else if(text.match(options.outOfStockMessage) === null) {
-                $(this).text(text + ' ('+options.outOfStockMessage+') ');
-            }
-        }
-    };
-
-    /**
-     * Visually hides the option from user by moving option to an invisible
-     * and disabled select placeholder element.
-     *
-     * This approach is required rather than simply hiding the option because
-     * hidden option can still be included when serializeArray() is called and
-     * cause wrong value to be submitted.
-     * (eg. if you have option 1, 2, 3 and 2 is hidden, when you select 3,
-     * serializeArray() will use the value of 2 instead of 3)
-     */
-    $.fn.toggleOption = function(show) {
-        var currentSelectElement = $(this).closest('select'), // the select containing this
-            disabledSelectElement, // the disabled select element
-            selectElement; // the real select element
-        
-        if (currentSelectElement.is(':disabled')) {
-            disabledSelectElement = currentSelectElement;
-            selectElement = disabledSelectElement.data('linkedSelectElement');
-        } else {
-            selectElement = currentSelectElement;
-            disabledSelectElement = currentSelectElement.data('linkedSelectElement');
-            if (!disabledSelectElement) {
-                // create the disabled placeholder select element
-                disabledSelectElement = 
-                    $('<select>')
-                        .prop('disabled', true)
-                        .hide()
-                        .attr('name', currentSelectElement.attr('name'))
-                        .addClass(currentSelectElement.attr('class'))
-                        .data('linkedSelectElement', selectElement)
-                        .insertAfter(selectElement);
-                selectElement.data('linkedSelectElement', disabledSelectElement);
-            }
-        }
-
-        // move the option to the correct select element if required
-        if (currentSelectElement.is(':disabled') && show) {
-            var previousIndex = this.data('index');
-            if (previousIndex > 0) {
-                this.insertAfter(selectElement.find('option:eq(' + (previousIndex-1) + ')'));
-            } else {
-                $(this).prependTo(selectElement);
-            }
-        } else if (!currentSelectElement.is(':disabled') && !show) {
-            this.data('index', currentSelectElement.find('option').index(this));
-            $(this).prependTo(disabledSelectElement);
-        }
-    };
-
-	/**
-	* This plugin implements behaviours for pick-list types rendering as a select input.
-	*/
-	$.fn.productOptionViewSelect = function (options) {
-		// nothing to do
-		return this;
-	};
-
-	/**
-	* This plugin implements behaviours for product picklist types
-	*/
-	$.fn.productOptionViewProductPickList = function (options) {
-		this.productOptionSelectedValue(options);
-		return this;
-	};
-
-	/**
-	* Checkbox required validator. The built-in required method looks up elements by name which causes the
-	* validation to not work for checkbox attributes which have a hidden input component.
-	*/
-	$.validator.addMethod('checkboxRequired', function (value, element) {
-		return this.findByName(element.name).filter(':checkbox:checked').length > 0;
-	});
-
-	/**
-	* This plugin implements behaviours applicable to checkbox option types.
-	*/
-	$.fn.productOptionConfigurableEntryCheckbox = function (options) {
-		var required = options.required;
-		options.required = false;
-
-		this.productOptionConfigurable(options);
-
-		return this.each(function(){
-			var target = $(this).find('.validation');
-
-			if (required) {
-				target.rules('add', {
-					checkboxRequired: true,
-					messages: {
-						checkboxRequired: options.validation.required
-					}
-				});
-			}
-		});
-	};
-
-	/**
-	* Validates the file type (extension)
-	*/
-	$.validator.addMethod('fileType', function (value, element, fileTypes) {
-		if (!value) {
-			return true;
-		}
-
-		var dot, extension;
-
-		dot = value.lastIndexOf('.');
-
-		if (dot < 0) {
-			return false;
-		}
-
-		extension = value.substr(dot + 1).toLowerCase();
-
-		if (extension == '') {
-			return false;
-		}
-
-		return $.inArray(extension, fileTypes) >= 0;
-	});
-
-	/**
-	* This plugin implements behaviours applicable to file-upload option types.
-	*/
-	$.fn.productOptionConfigurableEntryFile = function (options) {
-		// if the delete existing file input is present, then this field isn't required
-		if ($('#' + $(this).attr('id') + '_Delete').length) {
-			options.required = false;
-		}
-
-		this.productOptionConfigurable(options);
-
-		return this.each(function(){
-			var target = $(this).find('.validation');
-
-			if ($.isArray(options.fileTypes) && options.fileTypes.length) {
-				target.rules('add', {
-					fileType: options.fileTypes,
-					messages: {
-						fileType: options.validation.typeNotAllowed
-					}
-				});
-			}
-		});
-	};
-
-	/**
-	* Checks the earliest date
-	*/
-	$.validator.addMethod('earliestDate', function (value, element, earliestDate) {
-		if (!value) {
-			return true;
-		}
-
-		var date = new Date();
-		date.setISO(value);
-
-		return date >= earliestDate;
-	});
-
-	/**
-	* Checks latest date
-	*/
-	$.validator.addMethod('latestDate', function (value, element, latestDate) {
-		if (!value) {
-			return true;
-		}
-
-		var date = new Date();
-		date.setISO(value);
-
-		return date <= latestDate;
-	});
-
-	/**
-	* Checks that a date falls between a range
-	*/
-	$.validator.addMethod('dateRange', function (value, element, param) {
-		if (!value) {
-			return true;
-		}
-
-		var date = new Date();
-		date.setISO(value);
-
-		return date >= param.earliestDate && date <= param.latestDate;
-	});
-
-	/**
-	* This plugin implements behaviours applicable to text-entry option types.
-	*/
-	$.fn.productOptionConfigurableEntryDate = function (options) {
-		this.productOptionConfigurable(options); // inherit base configurable behaviour
-
-		return this.each(function(){
-			var $this = $(this),
-				validationTarget = $this.find('.validation'),
-				yearField = $this.find('.year'),
-				monthField = $this.find('.month'),
-				dayField = $this.find('.day'),
-				_revalidate;
-
-			_revalidate = function () {
-				validationTarget
-					.filter('.valid, .error')
-					.each(function(){
-						$(this).valid();
-					});
-			};
-
-			// whenever a date select is changed, populate the hidden-for-validation field with the date string - note
-			// this is for js validation only and server validation should still be performed on individual selects for
-			// when js is disabled
-			$this.find('.month, .day, .year')
-					.change(function(){
-						// build y-m-d string for locale-neutral validation
-						var year = yearField.val(),
-							month = monthField.val(),
-							day = dayField.val(),
-							date = '';
-
-						if (year && month && day) {
-							date = year + '-' + month + '-' + day;
-						}
-
-						// populate the validation target and trigger change events
-						validationTarget.val(date);
-						_revalidate();
-					})
-					.change(); // trigger change once on plugin application to populate input
-
-			// after the above, we can validate a date in the hidden field because we know the format is fine
-			validationTarget.rules('add', {
-				dateISO: true,
-				messages: {
-					dateISO: options.validation.invalidDate
-				}
-			});
-
-			if (options.limitDate) {
-				var earliestDate, latestDate;
-				earliestDate = new Date(options.earliestDate * 1000);
-				earliestDate.setHours(0,0,0);
-
-				latestDate = new Date(options.latestDate * 1000)
-				latestDate.setHours(23,59,59);
-
-				if (options.limitDateOption == 'range') {
-					validationTarget.rules('add', {
-						dateRange: {
-							earliestDate: earliestDate,
-							latestDate: latestDate
-						},
-						messages: {
-							dateRange: options.validation.range
-						}
-					});
-				}
-				else if (options.limitDateOption == 'earliest') {
-					validationTarget.rules('add', {
-						earliestDate: earliestDate,
-						messages: {
-							earliestDate: options.validation.earliestDate
-						}
-					});
-				}
-				else if (options.limitDateOption == 'latest') {
-					validationTarget.rules('add', {
-						latestDate: latestDate,
-						messages: {
-							latestDate: options.validation.latestDate
-						}
-					});
-				}
-			}
-
-			var selectDateCallback = function(dateText, picker){
-				dayField.val(picker.currentDay.pad(2, "0", String.PAD_TYPE_LEFT)).change();
-				monthField.val((picker.currentMonth + 1).pad(2, "0", String.PAD_TYPE_LEFT)).change();
-				yearField.val(picker.currentYear).change();
-			}
-
-			var getSelectedDate = function(){
-				var year = yearField.val(),
-					month = monthField.val(),
-					day = dayField.val();
-
-				if (!year || !month || !day) {
-					return;
-				}
-
-				return new Date(year, month - 1, day);
-			}
-
-			// add a datepicker ui
-			var picker = $this.find('.picker').datepicker({
-				showOn: 'both',
-				buttonImage: options.buttonImage,
-				buttonImageOnly: true,
-				defaultDate: new Date(),
-				firstDay: 1,
-				minDate: new Date(options.earliestDate * 1000),
-				maxDate: new Date(options.latestDate * 1000),
-				beforeShow: function (input, picker) {
-					// set the caledar to the correct date
-					$this.find('.picker')
-						.datepicker('setDate', getSelectedDate());
-				},
-				onSelect: selectDateCallback
-			});
-
-			if(typeof config == 'object' && config.isMobile) {
-				// hide the standard date selector and replace with a
-				// mobile date selector placeholder
-				$this.find('.dateselector')
-					.hide()
-					.after('<div class="mobile-dateselector"/>');
-
-				// add an onClose handler to the datepicker to hide the
-				// dimmer overlay
-				picker.datepicker('option', 'onClose', function(){
-					dimmer.hide();
-				});
-
-				// change the datepicker's onSelect handler to update the
-				// mobile date selector
-				var updateMobileDateSelector = function() {
-					$this.find('.mobile-dateselector').html(validationTarget.val());
-				}
-
-				picker.datepicker('option', 'onSelect', function(dateText, picker){
-					selectDateCallback(dateText, picker);
-					updateMobileDateSelector();
-				});
-
-				// add a click handler to show the dimmer overlay with
-				// the date picker centered on top
-				$this.find('.mobile-dateselector').click(
-					function(){
-						dimmer.show(function(){
-							picker.datepicker('hide');
-						});
-
-						picker.datepicker('show');
-
-						var widget = picker.datepicker('widget');
-
-						height = widget.height();
-						width = widget.width();
-						top =  ($(window).height() - height) / 2+$(window).scrollTop() + 'px';
-						left = ($(window).width() - width) / 2+$(window).scrollLeft() + 'px';
-
-						widget.css({
-							'z-index': 4001,
-							position: 'absolute',
-							top: top,
-							left: left
-						});
-					}
-				);
-
-				updateMobileDateSelector();
-			}
-		});
-	};
-
-	/**
-	* This plugin implements behaviours applicable to text-entry option types.
-	*/
-	$.fn.productOptionConfigurableEntryText = function (options) {
-		this.productOptionConfigurable(options); // inherit base configurable behaviour
-
-		return this.each(function(){
-			var target = $(this).find('.validation');
-
-			if (options.validateCharacterLength) {
-				if (options.minLength && options.maxLength) {
-					// use rangelength when both min and max lengths are set
-					target.rules('add', {
-						rangelength: [ options.minLength, options.maxLength ],
-						messages: {
-							rangelength: options.validation.rangeLength
-						}
-					});
-				} else if (options.minLength) {
-					target.rules('add', {
-						minlength: options.minLength,
-						messages: {
-							minlength: options.validation.minLength
-						}
-					});
-				} else if (options.maxLength) {
-					target.rules('add', {
-						maxlength: options.maxLength,
-						messages: {
-							maxlength: options.validation.maxLength
-						}
-					});
-				}
-			}
-		});
-	};
-
-	/**
-	* Number validator which is aware of locale-specific decimal and thousands tokens (but not currency)
-	*/
-	$.validator.addMethod('localenumber', function (value, element, param) {
-		var regex, pattern;
-
-		param = $.extend({
-			decimalToken: '.',
-			thousandsToken: ',',
-			integerOnly: false
-		}, param || {});
-
-		if (this.optional(element)) {
-			return true;
-		}
-
-		pattern = "^[-+]?(?:\\d+|\\d{1,3}(?:\\" + param.thousandsToken + "\\d{3})+)";
-		if (!param.integerOnly) {
-			pattern += "(?:\\" + param.decimalToken + "\\d+)?";
-		}
-		pattern += "$";
-
-		regex = new RegExp(pattern);
-
-		return regex.test(value);
-	});
-
-	/**
-	* This plugin implements behaviours applicable to numbers-only text-entry option types.
-	*/
-	$.fn.productOptionConfigurableEntryNumbersOnlyText = function (options) {
-		this.productOptionConfigurable(options);
-
-		// this does not inherit behaviour from the generic text input as lengths have a different meaning
-		return this.each(function(){
-			var target = $(this).find('.validation');
-
-			if (options.integerOnly) {
-				// validate an integer number
-				target.rules('add', {
-					localenumber: {
-						decimalToken: options.decimalToken,
-						thousandsToken: options.thousandsToken,
-						integerOnly: true
-					},
-					messages: {
-						localenumber: options.validation.notInteger
-					}
-				});
-			} else {
-				target.rules('add', {
-					localenumber: {
-						decimalToken: options.decimalToken,
-						thousandsToken: options.thousandsToken
-					},
-					messages: {
-						localenumber: options.validation.invalidNumber
-					}
-				});
-			}
-
-			if (options.limitInput) {
-				if (options.limitInputOption == 'range') {
-					target.rules('add', {
-						range: [ options.lowestValue, options.highestValue ],
-						messages: {
-							range: options.validation.range
-						}
-					});
-				} else if (options.limitInputOption == 'lowest') {
-					target.rules('add', {
-						min: options.lowestValue,
-						messages: {
-							min: options.validation.lowestValue
-						}
-					});
-				} else if (options.limitInputOption == 'highest') {
-					target.rules('add', {
-						max: options.highestValue,
-						messages: {
-							max: options.validation.highestValue
-						}
-					});
-				}
-			}
-		});
-	};
-
-	/**
-	* Max lines validator
-	*/
-	$.validator.addMethod('maxlines', function (value, element, maxLines) {
-		var matchedLines, matchedLinesLength;
-
-		matchedLines = value.match(/\n/gm);
-
-		if (matchedLines === null) {
-			matchedLinesLength = 1;
-		}
-		else {
-			matchedLinesLength = matchedLines.length + 1;
-		}
-
-		return matchedLinesLength <= maxLines;
-	});
-
-	/**
-	* This plugin implements behaviours specifically for multi-line text inputs.
-	*/
-	$.fn.productOptionConfigurableEntryTextMultiLine = function (options) {
-		this.productOptionConfigurableEntryText(options); // inherit base configurable behaviour
-
-		return this.each(function(){
-			var target = $(this).find('.validation');
-
-			if (options.validateLineLength && options.maxLines) {
-				target.rules('add', {
-					maxlines: options.maxLines,
-					messages: {
-						maxlines: options.validation.maxLines
-					}
-				});
-			}
-		});
-	};
-
-	/**
-	* This plugin implements behaviours for pick-list product-based types.
-	*/
-	$.fn.productOptionConfigurablePickListProduct = function (options) {
-		this.productOptionConfigurable(options);
-		return this;
-	};
-
-	/**
-	* This plugin implements behaviours for product picklist w/ image types
-	*/
-	$.fn.productOptionViewProductPickListWithImage = function (options) {
-		this.productOptionPreviewDisplay(options);
-
-		this.productOptionSelectedValue($.extend({}, options, {
-			container: 'tr'
-		}));
-
-		return this.each(function(){
-			$(this).find('input:checked')
-				// scroll the picklist to the pre-selected value to make it visible
-				.each(function(){
-					var $this = $(this);
-					$(this).closest('.scrollContainer')
-						.scrollTop($(this).closest('tr').position().top);
-				});
-		});
-	};
-
-	/**
-	* This plugin implements behaviours for pick-list swatch types.
-	*/
-	$.fn.productOptionConfigurablePickListSwatch = function (options) {
-		this.productOptionConfigurable(options); // inherit base configurable behaviour
-		this.productOptionSelectedValue(options);
-		this.productOptionPreviewDisplay(options);
-
-		return this.each(function(){
-			// the radio input is hidden when js is enabled so don't try to focus it
-			$(this).delegate('input', 'click', function(){
-				$(this).blur();
-			});
-		});
-	};
-
-	/**
-	* This plugin implements behaviours for pick-list set types.
-	*/
-	$.fn.productOptionConfigurablePickListSet = function (options) {
-		this.productOptionConfigurable(options); // inherit base configurable behaviour
-		// view specific behaviour will be applied by the view plugin
-		return this;
-	};
-
-})(jQuery);
\ No newline at end of file
diff --git a/template/js/bc/product.functions.js b/template/js/bc/product.functions.js
deleted file mode 100755
index bbc70e1..0000000
--- a/template/js/bc/product.functions.js
+++ /dev/null
@@ -1,230 +0,0 @@
-/* Product Variations */
-var baseProduct = {};
-
-function updateSelectedVariation(parent, variation, id) {
-	if(typeof(parent) == 'undefined') {
-		parent = $('body');
-	}
-	else {
-		parent = $(parent);
-	}
-
-	if (typeof id == 'undefined') {
-		id = '';
-	}
-
-	if(typeof(baseProduct.price) == 'undefined') {
-		if($('.AddCartButton', parent).css('display') == "none") {
-			var cartVisible = false;
-		}
-		else {
-			var cartVisible = true;
-		}
-
-		var stockMessageVisible = false;
-		if($('.OutOfStockMessage', parent).css('display') != 'none') {
-			stockMessageVisible = true;
-		}
-
-		var price;
-		$('.VariationProductPrice', parent).each(function(){
-			var $$ = $(this);
-			if ($$.is('input')) {
-				price = $$.val();
-			} else {
-				price = $$.html();
-			}
-		});
-
-		baseProduct = {
-			saveAmount: $.trim($('.YouSaveAmount', parent).html()),
-			price: $.trim(price),
-			sku: $.trim($('.VariationProductSKU', parent).html()),
-			weight: $.trim($('.VariationProductWeight', parent).html()),
-			thumb: $.trim($('.ProductThumbImage img', parent).attr('src')),
-			cartButton: cartVisible,
-			stockMessage: stockMessageVisible,
-			stockMessageText: $('.OutOfStockMessage', parent).html()
-		};
-	}
-
-	// Show the defaults again
-	if(typeof(variation) == 'undefined') {
-		$('.WishListVariationId', parent).val('');
-		$('.CartVariationId', parent).val('');
-		if(baseProduct.saveAmount) {
-			$('.YouSave', parent).show();
-			$('.YouSaveAmount').html(baseProduct.saveAmount);
-		} else {
-			$('.YouSave', parent).hide();
-		}
-		$('.VariationProductPrice', parent).each(function(){
-			var $$ = $(this);
-			if ($$.is('input')) {
-				$$.val(baseProduct.price);
-			} else {
-				$$.html(baseProduct.price);
-			}
-		});
-		$('.VariationProductSKU', parent).html(baseProduct.sku);
-		$('.VariationProductWeight', parent).html(baseProduct.weight);
-		$('.ProductThumbImage img', parent).attr('src', baseProduct.thumb);
-		$(parent).attr('currentVariation', '');
-		$(parent).attr('currentVariationImage', '')
-		if(baseProduct.sku == '') {
-			$('.ProductSKU', parent).hide();
-		}
-		if(baseProduct.cartButton) {
-			$('.AddCartButton', parent).show();
-			if(typeof ShowAddToCartQtyBox != 'undefined' && ShowAddToCartQtyBox=='1') {
-				$('.QuantityInput', parent).show();
-			}
-		}
-
-		if(baseProduct.stockMessage) {
-			$('.OutOfStockMessage', parent)
-				.show()
-				.html(baseProduct.stockMessageText)
-			;
-		}
-		else {
-			$('.OutOfStockMessage').hide();
-		}
-
-		$('.InventoryLevel', parent).hide();
-	}
-	// Otherwise, showing a specific variation
-	else {
-		$('.WishListVariationId', parent).val(id);
-		$('.CartVariationId', parent).val(id);
-
-		$('.VariationProductPrice', parent).each(function(){
-			var $$ = $(this),
-				price = baseProduct.price;
-
-			if (variation.price !== undefined) {
-				price = variation.price;
-			}
-
-			if ($$.is('input')) {
-				$$.val(price.replace(/[^0-9\.,]/g, ''));
-			} else {
-				$$.html(price);
-			}
-		});
-
-		if(variation.sku != '') {
-			$('.VariationProductSKU', parent).html(variation.sku);
-			$('.ProductSKU', parent).show();
-		}
-		else {
-			$('.VariationProductSKU', parent).html(baseProduct.sku);
-			if(baseProduct.sku) {
-				$('.ProductSKU', parent).show();
-			}
-			else {
-				$('.ProductSKU', parent).hide();
-			}
-		}
-		$('.VariationProductWeight', parent).html(variation.weight);
-		if(variation.instock == true) {
-			$('.AddCartButton', parent).show();
-			if(typeof ShowAddToCartQtyBox != 'undefined' && ShowAddToCartQtyBox=='1') {
-				$('.QuantityInput', parent).show();
-			}
-			$('.OutOfStockMessage', parent).hide();
-		}
-		else {
-			$('.AddCartButton, .QuantityInput', parent).hide();
-			$('.OutOfStockMessage', parent).html(lang.VariationSoldOutMessage);
-			$('.OutOfStockMessage', parent).show();
-		}
-		if(variation.thumb != '') {
-			ShowVariationThumb = true;
-			$('.ProductThumbImage img', parent).attr('src', variation.thumb);
-			$(parent).attr('currentVariation', id);
-			$(parent).attr('currentVariationImage', variation.image);
-
-			$('.ProductThumbImage a').attr("href", variation.image);
-		}
-		else {
-			$('.ProductThumbImage img', parent).attr('src', baseProduct.thumb);
-			$(parent).attr('currentVariation', '');
-			$(parent).attr('currentVariationImage', '')
-		}
-		if(variation.stock && parseInt(variation.stock)) {
-			$('.InventoryLevel', parent).show();
-			$('.VariationProductInventory', parent).html(variation.stock);
-		}
-		else {
-			$('.InventoryLevel', parent).hide();
-		}
-		if(variation.saveAmount) {
-			$('.YouSave', parent).show();
-			$('.YouSaveAmount').html(variation.saveAmount);
-			$('.RetailPrice').show();
-		} else {
-			$('.YouSave', parent).hide();
-			$('.RetailPrice').hide();
-		}
-	}
-}
-
-function CheckEventDate() {
-
-	var result = true;
-
-	if(typeof(eventDateData) == 'undefined') {
-		return true;
-	}
-
-	if ($('#EventDateDay').val() == -1 || $('#EventDateMonth').val() == -1 || $('#EventDateYear').val() == -1) {
-		alert(eventDateData['invalidMessage']);
-		return false;
-	}
-
-	if (eventDateData['type'] == 1) {
-		if (new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) > new Date(eventDateData['compDateEnd'])
-		 || new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) < new Date(eventDateData['compDate'])
-		) {
-			result = false;
-		}
-
-	} else if (eventDateData['type'] == 2) {
-		if (new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) < new Date(eventDateData['compDate'])) {
-			result = false;
-		}
-
-	} else if (eventDateData['type'] == 3) {
-		if (new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) > new Date(eventDateData['compDate'])) {
-			result = false;
-		}
-	} else {
-		result = true;
-	}
-
-	if (!result) {
-		alert(eventDateData['errorMessage']);
-	}
-	return result;
-}
-
-function selectCurrentVideo (videoId) {
-	$('.currentVideo').removeClass('currentVideo');
-	$('#video_' + videoId).addClass('currentVideo');
-}
-
-function showVideoPopup(videoId) {
-	var l = (screen.availWidth/2)-250;
-	var t = (screen.availHeight/2)-200;
-	window.open(config.ShopPath + "/productimage.php?video_id="+videoId, "imagePop", "toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=530,height=430,top="+t+",left="+l);
-}
-
-function updatePinterestMediaLink(image) 
-{
-	var src = $('.PinterestButtonContainer > a').attr('href');
-	if (typeof src != 'undefined') {
-		var newsrc = src.replace(new RegExp('&media=([^&]+)'), '&media=' + image);
-		$('.PinterestButtonContainer > a').attr('href', newsrc);
-	}
-}
\ No newline at end of file
diff --git a/template/js/bc/product.js b/template/js/bc/product.js
deleted file mode 100755
index d19a57a..0000000
--- a/template/js/bc/product.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * All functions have been moved to product.functions.js
- * This is because this file was used in the control panel as well as the front end, but the
- * below initialization code is only meant for the frontend.
- */
-$(document).ready(function() {
-	// disable image popup on product page at 480 breakpoint
-	$(".product-thumbs a").click(function(event){
-		if($(window).width() <= 480){
-			event.stopPropagation();
-			event.preventDefault();
-		}
-	});
-	
-	// are there any videos in the middle column?
-	if($('.videoRow').size() > 0) {
-		$('.videoRow').bind('click', function () {
-			var videoId = $(this).attr('id').replace('video_', '');
-			$('#FeaturedVideo').html('<object width="320" height="265">'
-				+ '<param name="movie" value="http://www.youtube.com/v/' + videoId + '?fs=1"></param>'
-				+ '<param name="allowFullScreen" value="true"></param>'
-				+ '<param name="allowscriptaccess" value="always"></param>'
-				+ '<embed src="http://www.youtube.com/v/'  + videoId + '?&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed>'
-				+ '</object>'
-			);
-			selectCurrentVideo(videoId);
-		});
-	}
-
-	// are there any videos in the left or right columns?
-	if($('.sideVideoRow').size() > 0) {
-		$('.sideVideoRow a').bind('click', function (event) {
-			event.preventDefault();
-		
-			// grab the video id out of the tag id
-			var videoId = $(this).attr('id').replace('sidevideo_', '');
-
-			if(config.ProductImageMode == 'lightbox') {
-				// we need to hide any objects on the page as they appear onto of our modal window
-				$('#VideoContainer object').css('visibility', 'hidden');
-
-				$.iModal({
-					data: '<object width="480" height="385">'
-						+ '<param name="movie" value="http://www.youtube.com/v/' + videoId + '?fs=1"></param>'
-						+ '<param name="allowFullScreen" value="true"></param>'
-						+ '<param name="allowscriptaccess" value="always"></param>'
-						+ '<embed src="http://www.youtube.com/v/'  + videoId + '?&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed>'
-						+ '</object>',
-					title: $(this).find('img').attr('title'),
-					width: 510,
-					buttons: '<input type="button" onclick="$.iModal.close();" value="  ' + lang.Close +'  " />',
-					onBeforeClose: function() {
-						// reshow any objects that were hidden
-						$('#VideoContainer object').css('visibility', 'visible');
-					}
-				});
-			} else {
-				showVideoPopup(videoId);
-			}
-		});
-	}
-
-	// disable all but the first variation box
-	$(".VariationSelect:gt(0)").attr('disabled', 'disabled');
-
-	var prodVarSelectionMap = {}
-	$(".VariationSelect").change(function() {
-		// cache a map of currently selected values.
-		var mapIndex = 0;
-		$('.VariationSelect').each(function() {
-			prodVarSelectionMap[mapIndex] = this.value;
-			mapIndex++;
-		});
-
-		// get the index of this select
-		var index = $('.VariationSelect').index($(this));
-
-		// deselected an option, disable all select's greater than this
-		if (this.selectedIndex == 0) {
-			$('.VariationSelect:gt(' + index + ')').attr('disabled', 'disabled')
-			updateSelectedVariation($('body'));
-			return;
-		}
-		else {
-			// disable selects greater than the next
-			$('.VariationSelect:gt(' + (index + 1) + ')').attr('disabled', 'disabled')
-		}
-
-		//serialize the options of the variation selects
-		var optionIds = '';
-		$('.VariationSelect:lt(' + (index + 1) + ')').each(function() {
-			if (optionIds != '') {
-				optionIds += ',';
-			}
-
-			optionIds += $(this).val();
-		});
-		// request values for this option
-		$.getJSON(
-			config.AppPath + '/remote.php?w=GetVariationOptions&productId=' + productId + '&options=' + optionIds,
-			function(data) {
-				// were options returned?
-				if (data.hasOptions) {
-					// load options into the next select, disable and focus it
-					$('.VariationSelect:eq(' + (index + 1) + ') option:gt(0)').remove();
-					$('.VariationSelect:eq(' + (index + 1) + ')').append(data.options).attr('disabled', false).focus();
-
-					// auto select previously selected option, and cascade down, if possible
-					var preVal = prodVarSelectionMap[(index + 1)];
-					if (preVal != '') {
-						var preOption = $('.VariationSelect:eq(' + (index + 1) + ') option[value=' +preVal+']');
-						if (preOption) {
-							preOption.attr('selected', true);
-							$('.VariationSelect:eq(' + (index + 1) + ')').trigger('change');
-						}
-					}
-				}
-				else if (data.comboFound) { // was a combination found instead?
-					// display price, image etc
-					updateSelectedVariation($('body'), data, data.combinationid);
-				}
-			}
-		);
-	});
-
-	//radio button variations
-	$('.ProductOptionList input[type=radio]').click(function() {
-		//current selected option id
-		var optionId = $(this).val();
-		// request values for this option
-		$.getJSON(
-			config.AppPath + '/remote.php?w=GetVariationOptions&productId=' + productId + '&options=' + optionId,
-			function(data) {
-				if (!data) {
-					return;
-				}
-
-				if (data.comboFound) { // was a combination found instead?
-					// display price, image etc
-					updateSelectedVariation($('body'), data, data.combinationid);
-				}
-			}
-		);
-	});
-});
diff --git a/template/js/foundation.min.js b/template/js/foundation.min.js
deleted file mode 100755
index 9677bd8..0000000
--- a/template/js/foundation.min.js
+++ /dev/null
@@ -1,10 +0,0 @@
-(function(b,a,d){var e=b(document),c=a.Modernizr;b(document).ready(function(){b.fn.foundationAlerts?e.foundationAlerts():null;b.fn.foundationButtons?e.foundationButtons():null;b.fn.foundationAccordion?e.foundationAccordion():null;b.fn.foundationNavigation?e.foundationNavigation():null;b.fn.foundationTopBar?e.foundationTopBar():null;b.fn.foundationCustomForms?e.foundationCustomForms():null;b.fn.foundationMediaQueryViewer?e.foundationMediaQueryViewer():null;b.fn.foundationTabs?e.foundationTabs({callback:b.foundation.customForms.appendCustomMarkup}):null;b.fn.foundationTooltips?e.foundationTooltips():null;b.fn.foundationMagellan?e.foundationMagellan():null;b.fn.foundationClearing?e.foundationClearing():null;b.fn.placeholder?b("input, textarea").placeholder():null});if(c.touch&&!a.location.hash){b(a).load(function(){setTimeout(function(){a.scrollTo(0,1)},0)})}})(jQuery,this);(function(b,a,c){b.fn.foundationAlerts=function(d){var e=b.extend({callback:b.noop},d);b(document).on("click",".alert-box a.close",function(f){f.preventDefault();b(this).closest(".alert-box").fadeOut(function(){b(this).remove();e.callback()})})}})(jQuery,this);(function(b,a,c){b.fn.foundationButtons=function(l){var g=b(document),e=b.extend({dropdownAsToggle:false,activeClass:"active"},l),f=function(m){b(".button.dropdown").find("ul").not(m).removeClass("show-dropdown")},i=function(m){var n=b(".button.dropdown").not(m);n.add(b("> span."+e.activeClass,n)).removeClass(e.activeClass)};g.on("click.fndtn",".button.disabled",function(m){m.preventDefault()});b(".button.dropdown > ul",this).addClass("no-hover");g.on("click.fndtn",".button.dropdown:not(.split), .button.dropdown.split span",function(o){var n=b(this),m=n.closest(".button.dropdown"),p=b("> ul",m);if(o.target.nodeName!=="A"){o.preventDefault()}setTimeout(function(){f(e.dropdownAsToggle?p:"");p.toggleClass("show-dropdown");if(e.dropdownAsToggle){i(m);n.toggleClass(e.activeClass)}},0)});g.on("click.fndtn","body, html",function(m){if(c==m.originalEvent){return}if(!b(m.originalEvent.target).is(".button.dropdown:not(.split), .button.dropdown.split span")){f();if(e.dropdownAsToggle){i()}}});var h=b(".button.dropdown:not(.large):not(.small):not(.tiny):visible",this).outerHeight()-1,k=b(".button.large.dropdown:visible",this).outerHeight()-1,d=b(".button.small.dropdown:visible",this).outerHeight()-1,j=b(".button.tiny.dropdown:visible",this).outerHeight()-1;b(".button.dropdown:not(.large):not(.small):not(.tiny) > ul",this).css("top",h);b(".button.dropdown.large > ul",this).css("top",k);b(".button.dropdown.small > ul",this).css("top",d);b(".button.dropdown.tiny > ul",this).css("top",j);b(".button.dropdown.up:not(.large):not(.small):not(.tiny) > ul",this).css("top","auto").css("bottom",h-2);b(".button.dropdown.up.large > ul",this).css("top","auto").css("bottom",k-2);b(".button.dropdown.up.small > ul",this).css("top","auto").css("bottom",d-2);b(".button.dropdown.up.tiny > ul",this).css("top","auto").css("bottom",j-2)}})(jQuery,this);(function(d,c,a,f){var e={templates:{viewing:'<a href="#" class="clearing-close">&times;</a><div class="visible-img" style="display: none"><img src="#"><p class="clearing-caption"></p><a href="#" class="clearing-main-left"></a><a href="#" class="clearing-main-right"></a></div>'},close_selectors:"a.clearing-close",initialized:false,locked:false},b={init:function(g,h){return this.find("ul[data-clearing]").each(function(){var l=d(a),j=d(this),i=i||{},m=m||{},k=j.data("fndtn.clearing.settings");if(!k){i.$parent=j.parent();j.data("fndtn.clearing.settings",d.extend({},e,i));b.assemble(j.find("li"));if(!e.initialized){b.events(j);if(Modernizr.touch){b.swipe_events()}}}})},events:function(h){var g=h.data("fndtn.clearing.settings");d(a).on("click.fndtn.clearing","ul[data-clearing] li",function(l,k,j){var k=k||d(this),j=j||k,i=k.parent().data("fndtn.clearing.settings");l.preventDefault();if(!i){k.parent().foundationClearing()}b.open(d(l.target),k,j);b.update_paddles(j)}).on("click.fndtn.clearing",".clearing-main-right",function(i){b.nav(i,"next")}).on("click.fndtn.clearing",".clearing-main-left",function(i){b.nav(i,"prev")}).on("click.fndtn.clearing",g.close_selectors,this.close).on("keydown.fndtn.clearing",this.keydown);d(c).on("resize.fndtn.clearing",this.resize);e.initialized=true},swipe_events:function(){d(a).bind("swipeleft","ul[data-clearing]",function(g){b.nav(g,"next")}).bind("swiperight","ul[data-clearing]",function(g){b.nav(g,"prev")}).bind("movestart","ul[data-clearing]",function(g){if((g.distX>g.distY&&g.distX<-g.distY)||(g.distX<g.distY&&g.distX>-g.distY)){g.preventDefault()}})},assemble:function(l){var h=l.parent(),i=h.data("fndtn.clearing.settings"),g=h.detach(),j={grid:'<div class="carousel">'+this.outerHTML(g[0])+"</div>",viewing:i.templates.viewing},k='<div class="clearing-assembled"><div>'+j.viewing+j.grid+"</div></div>";return i.$parent.append(k)},open:function(j,m,l){var h=l.closest(".clearing-assembled"),g=h.find("div:first"),i=g.find(".visible-img"),k=i.find("img").not(j);if(!b.locked()){k.attr("src",this.load(j));k.loaded(function(){h.addClass("clearing-blackout");g.addClass("clearing-container");this.caption(i.find(".clearing-caption"),j);i.show();this.fix_height(l);this.center(k);this.shift(m,l,function(){l.siblings().removeClass("visible");l.addClass("visible")})}.bind(this))}},close:function(j){j.preventDefault();var h=(function(k){if(/blackout/.test(k.selector)){return k}else{return k.closest(".clearing-blackout")}}(d(this))),g,i;if(this===j.target&&h){g=h.find("div:first"),i=g.find(".visible-img");e.prev_index=0;h.find("ul[data-clearing]").attr("style","");h.removeClass("clearing-blackout");g.removeClass("clearing-container");i.hide()}return false},keydown:function(h){var g=d(".clearing-blackout").find("ul[data-clearing]");if(h.which===39){b.go(g,"next")}if(h.which===37){b.go(g,"prev")}if(h.which===27){d("a.clearing-close").trigger("click")}},nav:function(i,h){var g=d(".clearing-blackout").find("ul[data-clearing]");i.preventDefault();this.go(g,h)},resize:function(){var g=d(".clearing-blackout .visible-img").find("img");if(g.length>0){b.center(g)}},fix_height:function(h){var g=h.siblings();g.each(function(){var i=d(this),j=i.find("img");if(i.height()>j.outerHeight()){i.addClass("fix-height")}}).closest("ul").width(g.length*100+"%")},update_paddles:function(h){var g=h.closest(".carousel").siblings(".visible-img");if(h.next().length>0){g.find(".clearing-main-right").removeClass("disabled")}else{g.find(".clearing-main-right").addClass("disabled")}if(h.prev().length>0){g.find(".clearing-main-left").removeClass("disabled")}else{g.find(".clearing-main-left").addClass("disabled")}},load:function(h){var g=h.parent().attr("href");this.preload(h);if(g){return g}return h.attr("src")},preload:function(g){this.img(g.closest("li").next());this.img(g.closest("li").prev())},img:function(g){if(g.length>0){var h=new Image(),i=g.find("a");if(i.length>0){h.src=i.attr("href")}else{h.src=g.find("img").attr("src")}}},caption:function(g,i){var h=i.data("caption");if(h){g.text(h).show()}else{g.text("").hide()}},go:function(g,j){var i=g.find(".visible"),h=i[j]();if(h.length>0){h.find("img").trigger("click",[i,h])}},shift:function(j,k,o){var l=k.parent(),i=e.prev_index,m=this.direction(l,j,k),h=parseInt(l.css("left"),10),g=k.outerWidth(),n;if(k.index()!==i&&!/skip/.test(m)){if(/left/.test(m)){this.lock();l.animate({left:h+g},300,this.unlock)}else{if(/right/.test(m)){this.lock();l.animate({left:h-g},300,this.unlock)}}}else{if(/skip/.test(m)){n=k.index()-e.up_count;this.lock();if(n>0){l.animate({left:-(n*g)},300,this.unlock)}else{l.animate({left:0},300,this.unlock)}}}o()},lock:function(){e.locked=true},unlock:function(){e.locked=false},locked:function(){return e.locked},direction:function(j,l,k){var i=j.find("li"),h=i.outerWidth()+(i.outerWidth()/4),m=Math.floor(d(".clearing-container").outerWidth()/h)-1,n=i.index(k),g;e.up_count=m;if(this.adjacent(e.prev_index,n)){if((n>m)&&n>e.prev_index){g="right"}else{if((n>m-1)&&n<=e.prev_index){g="left"}else{g=false}}}else{g="skip"}e.prev_index=n;return g},adjacent:function(j,h){for(var g=h+1;g>=h-1;g--){if(g===j){return true}}return false},center:function(g){g.css({marginLeft:-(g.width()/2),marginTop:-(g.height()/2)})},outerHTML:function(g){return g.outerHTML||new XMLSerializer().serializeToString(g)}};d.fn.foundationClearing=function(g){if(b[g]){return b[g].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof g==="object"||!g){return b.init.apply(this,arguments)}else{d.error("Method "+g+" does not exist on jQuery.foundationClearing")}}};(function(g){g.fn.loaded=function(n,l){var j=g.extend({},g.fn.loaded.defaults,l),i=this.find("img").add(this.filter("img")),k=i.length;function h(){k-=1;!k&&n()}function m(){this.one("load",h);if(g.browser.msie){var p=this.attr("src"),o=p.match(/\?/)?"&":"?";o+=j.cachePrefix+"="+(new Date()).getTime();this.attr("src",p+o)}}return i.each(function(){var o=g(this);if(!o.attr("src")){h();return}this.complete||this.readyState===4?h():m.call(o)})};g.fn.loaded.defaults={cachePrefix:"random"}}(jQuery))}(jQuery,this,this.document));(function(d){var c=function(){return{tmp:[],hidden:null,adjust:function(g){var f=this;f.hidden=g.parents().andSelf().filter(":hidden");f.hidden.each(function(){var h=d(this);f.tmp.push(h.attr("style"));h.css({visibility:"hidden",display:"block"})})},reset:function(){var f=this;f.hidden.each(function(h){var g=d(this),j=f.tmp[h];if(j===undefined){g.removeAttr("style")}else{g.attr("style",j)}});f.tmp=[];f.hidden=null}}};jQuery.foundation=jQuery.foundation||{};jQuery.foundation.customForms=jQuery.foundation.customForms||{};d.foundation.customForms.appendCustomMarkup=function(h){var i={disable_class:"js-disable-custom"};h=d.extend(i,h);function g(j,m){var n=d(m).hide(),l=n.attr("type"),k=n.next("span.custom."+l);if(k.length===0){k=d('<span class="custom '+l+'"></span>').insertAfter(n)}k.toggleClass("checked",n.is(":checked"));k.toggleClass("disabled",n.is(":disabled"))}function f(u,l){var x=c();var q=d(l),p=q.next("div.custom.dropdown"),r=p.find("ul"),s=p.find(".current"),w=p.find(".selector"),o=q.find("option"),m=o.filter(":selected"),v=0,t="",k;var j=false;if(q.hasClass("no-custom")){return}if(p.length===0){var n=q.hasClass("small")?"small":q.hasClass("medium")?"medium":q.hasClass("large")?"large":q.hasClass("expand")?"expand":"";p=d('<div class="'+["custom","dropdown",n].join(" ")+'"><a href="#" class="selector"></a><ul /></div>"');w=p.find(".selector");r=p.find("ul");t=o.map(function(){return"<li>"+d(this).html()+"</li>"}).get().join("");r.append(t);j=p.prepend('<a href="#" class="current">'+m.html()+"</a>").find(".current");q.after(p).hide()}else{t=o.map(function(){return"<li>"+d(this).html()+"</li>"}).get().join("");r.html("").append(t)}p.toggleClass("disabled",q.is(":disabled"));k=r.find("li");o.each(function(y){if(this.selected){k.eq(y).addClass("selected");if(j){j.html(d(this).html())}}});r.css("width","inherit");p.css("width","inherit");if(!p.is(".small, .medium, .large, .expand")){p.addClass("open");x.adjust(r);v=(k.outerWidth()>v)?k.outerWidth():v;x.reset();p.removeClass("open");p.width(v+18);r.width(v+16)}}d("form.custom input:radio[data-customforms!=disabled]").each(g);d("form.custom input:checkbox[data-customforms!=disabled]").each(g);d("form.custom select[data-customforms!=disabled]").each(f)};var b=function(f){var g=0,h=f.next();$options=f.find("option");h.find("ul").html("");$options.each(function(){$li=d("<li>"+d(this).html()+"</li>");h.find("ul").append($li)});$options.each(function(i){if(this.selected){h.find("li").eq(i).addClass("selected");h.find(".current").html(d(this).html())}});h.removeAttr("style").find("ul").removeAttr("style");h.find("li").each(function(){h.addClass("open");if(d(this).outerWidth()>g){g=d(this).outerWidth()}h.removeClass("open")});h.css("width",g+18+"px");h.find("ul").css("width",g+16+"px")};var a=function(f){var h=f.prev(),g=h[0];if(false===h.is(":disabled")){g.checked=((g.checked)?false:true);f.toggleClass("checked");h.trigger("change")}};var e=function(f){var i=f.prev(),h=i.closest("form.custom"),g=i[0];if(false===i.is(":disabled")){h.find('input:radio[name="'+i.attr("name")+'"]').next().not(f).removeClass("checked");if(!f.hasClass("checked")){f.toggleClass("checked")}g.checked=f.hasClass("checked");i.trigger("change")}};d(document).on("click","form.custom span.custom.checkbox",function(f){f.preventDefault();f.stopPropagation();a(d(this))});d(document).on("click","form.custom span.custom.radio",function(f){f.preventDefault();f.stopPropagation();e(d(this))});d(document).on("change","form.custom select[data-customforms!=disabled]",function(f){b(d(this))});d(document).on("click","form.custom label",function(g){var f=d("#"+d(this).attr("for")+"[data-customforms!=disabled]"),i,h;if(f.length!==0){if(f.attr("type")==="checkbox"){g.preventDefault();i=d(this).find("span.custom.checkbox");a(i)}else{if(f.attr("type")==="radio"){g.preventDefault();h=d(this).find("span.custom.radio");e(h)}}}});d(document).on("click","form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector",function(g){var i=d(this),h=i.closest("div.custom.dropdown"),f=h.prev();g.preventDefault();d("div.dropdown").removeClass("open");if(false===f.is(":disabled")){h.toggleClass("open");if(h.hasClass("open")){d(document).bind("click.customdropdown",function(j){h.removeClass("open");d(document).unbind(".customdropdown")})}else{d(document).unbind(".customdropdown")}return false}});d(document).on("click","form.custom div.custom.dropdown li",function(i){var j=d(this),g=j.closest("div.custom.dropdown"),h=g.prev(),f=0;i.preventDefault();i.stopPropagation();d("div.dropdown").removeClass("open");j.closest("ul").find("li").removeClass("selected");j.addClass("selected");g.removeClass("open").find("a.current").html(j.html());j.closest("ul").find("li").each(function(k){if(j[0]==this){f=k}});h[0].selectedIndex=f;h.trigger("change")});d.fn.foundationCustomForms=d.foundation.customForms.appendCustomMarkup})(jQuery);(function(b,a,c){b.fn.foundationMediaQueryViewer=function(d){var e=b.extend(d,{toggleKey:77}),f=b(document);f.on("keyup.mediaQueryViewer",":input",function(g){if(g.which===e.toggleKey){g.stopPropagation()}});f.on("keyup.mediaQueryViewer",function(g){var h=b("#fqv");if(g.which===e.toggleKey){if(h.length>0){h.remove()}else{b("body").prepend('<div id="fqv" style="position:fixed;top:4px;left:4px;z-index:999;color:#fff;"><p style="font-size:12px;background:rgba(0,0,0,0.75);padding:5px;margin-bottom:1px;line-height:1.2;"><span class="left">Media:</span> <span style="font-weight:bold;" class="show-for-xlarge">Extra Large</span><span style="font-weight:bold;" class="show-for-large">Large</span><span style="font-weight:bold;" class="show-for-medium">Medium</span><span style="font-weight:bold;" class="show-for-small">Small</span><span style="font-weight:bold;" class="show-for-landscape">Landscape</span><span style="font-weight:bold;" class="show-for-portrait">Portrait</span><span style="font-weight:bold;" class="show-for-touch">Touch</span></p></div>')}}})}})(jQuery,this);(function(b,a,c){b.fn.foundationNavigation=function(e){var d=false;if(Modernizr.touch||navigator.userAgent.match(/Windows Phone/i)){b(document).on("click.fndtn touchstart.fndtn",".nav-bar a.flyout-toggle",function(g){g.preventDefault();var f=b(this).siblings(".flyout").first();if(d===false){b(".nav-bar .flyout").not(f).slideUp(500);f.slideToggle(500,function(){d=false})}d=true});b(".nav-bar>li.has-flyout",this).addClass("is-touch")}else{b(".nav-bar>li.has-flyout",this).on("mouseenter mouseleave",function(h){if(h.type=="mouseenter"){b(".nav-bar").find(".flyout").hide();b(this).children(".flyout").show()}if(h.type=="mouseleave"){var g=b(this).children(".flyout"),f=g.find("input"),i=function(k){var j;if(k.length>0){k.each(function(){if(b(this).is(":focus")){j=true}});return j}return false};if(!i(f)){b(this).children(".flyout").hide()}}})}}})(jQuery,this);(function(b){b.fn.findFirstImage=function(){return this.first().find("img").andSelf().filter("img").first()};var a={defaults:{animation:"horizontal-push",animationSpeed:600,timer:true,advanceSpeed:4000,pauseOnHover:false,startClockOnMouseOut:false,startClockOnMouseOutAfter:1000,directionalNav:true,directionalNavRightText:"Right",directionalNavLeftText:"Left",captions:true,captionAnimation:"fade",captionAnimationSpeed:600,resetTimerOnClick:false,bullets:false,bulletThumbs:false,bulletThumbLocation:"",afterSlideChange:b.noop,afterLoadComplete:b.noop,fluid:true,centerBullets:true,singleCycle:false,slideNumber:false,stackOnSmall:false},activeSlide:0,numberSlides:0,orbitWidth:null,orbitHeight:null,locked:null,timerRunning:null,degrees:0,wrapperHTML:'<div class="orbit-wrapper" />',timerHTML:'<div class="timer"><span class="mask"><span class="rotator"></span></span><span class="pause"></span></div>',captionHTML:'<div class="orbit-caption"></div>',directionalNavHTML:'<div class="slider-nav hide-for-small"><span class="right"></span><span class="left"></span></div>',bulletHTML:'<ul class="orbit-bullets"></ul>',slideNumberHTML:'<span class="orbit-slide-counter"></span>',init:function(f,e){var c,g=0,d=this;this.clickTimer=b.proxy(this.clickTimer,this);this.addBullet=b.proxy(this.addBullet,this);this.resetAndUnlock=b.proxy(this.resetAndUnlock,this);this.stopClock=b.proxy(this.stopClock,this);this.startTimerAfterMouseLeave=b.proxy(this.startTimerAfterMouseLeave,this);this.clearClockMouseLeaveTimer=b.proxy(this.clearClockMouseLeaveTimer,this);this.rotateTimer=b.proxy(this.rotateTimer,this);this.options=b.extend({},this.defaults,e);if(this.options.timer==="false"){this.options.timer=false}if(this.options.captions==="false"){this.options.captions=false}if(this.options.directionalNav==="false"){this.options.directionalNav=false}this.$element=b(f);this.$wrapper=this.$element.wrap(this.wrapperHTML).parent();this.$slides=this.$element.children("img, a, div, figure");this.$element.on("movestart",function(h){if((h.distX>h.distY&&h.distX<-h.distY)||(h.distX<h.distY&&h.distX>-h.distY)){h.preventDefault()}});this.$element.bind("orbit.next",function(){d.shift("next")});this.$element.bind("orbit.prev",function(){d.shift("prev")});this.$element.bind("swipeleft",function(){b(this).trigger("orbit.next")});this.$element.bind("swiperight",function(){b(this).trigger("orbit.prev")});this.$element.bind("orbit.goto",function(i,h){d.shift(h)});this.$element.bind("orbit.start",function(i,h){d.startClock()});this.$element.bind("orbit.stop",function(i,h){d.stopClock()});c=this.$slides.filter("img");if(c.length===0){this.loaded()}else{c.bind("imageready",function(){g+=1;if(g===c.length){d.loaded()}})}},loaded:function(){this.$element.addClass("orbit").css({width:"1px",height:"1px"});if(this.options.stackOnSmall){this.$element.addClass("orbit-stack-on-small")}this.$slides.addClass("orbit-slide");this.setDimentionsFromLargestSlide();this.updateOptionsIfOnlyOneSlide();this.setupFirstSlide();this.notifySlideChange();if(this.options.timer){this.setupTimer();this.startClock()}if(this.options.captions){this.setupCaptions()}if(this.options.directionalNav){this.setupDirectionalNav()}if(this.options.bullets){this.setupBulletNav();this.setActiveBullet()}this.options.afterLoadComplete.call(this);Holder.run()},currentSlide:function(){return this.$slides.eq(this.activeSlide)},notifySlideChange:function(){if(this.options.slideNumber){var c=(this.activeSlide+1)+" of "+this.$slides.length;this.$element.trigger("orbit.change",{slideIndex:this.activeSlide,slideCount:this.$slides.length});if(this.$counter===undefined){var d=b(this.slideNumberHTML).html(c);this.$counter=d;this.$wrapper.append(this.$counter)}else{this.$counter.html(c)}}},setDimentionsFromLargestSlide:function(){var d=this,c;d.$element.add(d.$wrapper).width(this.$slides.first().outerWidth());d.$element.add(d.$wrapper).height(this.$slides.first().height());d.orbitWidth=this.$slides.first().outerWidth();d.orbitHeight=this.$slides.first().height();c=this.$slides.first().findFirstImage().clone();this.$slides.each(function(){var e=b(this),g=e.outerWidth(),f=e.height();if(g>d.$element.outerWidth()){d.$element.add(d.$wrapper).width(g);d.orbitWidth=d.$element.outerWidth()}if(f>d.$element.height()){d.$element.add(d.$wrapper).height(f);d.orbitHeight=d.$element.height();c=b(this).findFirstImage().clone()}d.numberSlides+=1});if(this.options.fluid){if(typeof this.options.fluid==="string"){c=b("<img>").attr("data-src","holder.js/"+this.options.fluid)}d.$element.prepend(c);c.addClass("fluid-placeholder");d.$element.add(d.$wrapper).css({width:"inherit"});d.$element.add(d.$wrapper).css({height:"inherit"});b(window).bind("resize",function(){d.orbitWidth=d.$element.outerWidth();d.orbitHeight=d.$element.height()})}},lock:function(){this.locked=true},unlock:function(){this.locked=false},updateOptionsIfOnlyOneSlide:function(){if(this.$slides.length===1){this.options.directionalNav=false;this.options.timer=false;this.options.bullets=false}},setupFirstSlide:function(){var c=this;this.$slides.first().css({"z-index":3,opacity:1}).fadeIn(function(){c.$slides.css({display:"block"})})},startClock:function(){var c=this;if(!this.options.timer){return false}if(this.$timer.is(":hidden")){this.clock=setInterval(function(){c.$element.trigger("orbit.next")},this.options.advanceSpeed)}else{this.timerRunning=true;this.$pause.removeClass("active");this.clock=setInterval(this.rotateTimer,this.options.advanceSpeed/180,false)}},rotateTimer:function(d){var c="rotate("+this.degrees+"deg)";this.degrees+=2;this.$rotator.css({"-webkit-transform":c,"-moz-transform":c,"-o-transform":c,"-ms-transform":c});if(d){this.degrees=0;this.$rotator.removeClass("move");this.$mask.removeClass("move")}if(this.degrees>180){this.$rotator.addClass("move");this.$mask.addClass("move")}if(this.degrees>360){this.$rotator.removeClass("move");this.$mask.removeClass("move");this.degrees=0;this.$element.trigger("orbit.next")}},stopClock:function(){if(!this.options.timer){return false}else{this.timerRunning=false;clearInterval(this.clock);this.$pause.addClass("active")}},setupTimer:function(){this.$timer=b(this.timerHTML);this.$wrapper.append(this.$timer);this.$rotator=this.$timer.find(".rotator");this.$mask=this.$timer.find(".mask");this.$pause=this.$timer.find(".pause");this.$timer.click(this.clickTimer);if(this.options.startClockOnMouseOut){this.$wrapper.mouseleave(this.startTimerAfterMouseLeave);this.$wrapper.mouseenter(this.clearClockMouseLeaveTimer)}if(this.options.pauseOnHover){this.$wrapper.mouseenter(this.stopClock)}},startTimerAfterMouseLeave:function(){var c=this;this.outTimer=setTimeout(function(){if(!c.timerRunning){c.startClock()}},this.options.startClockOnMouseOutAfter)},clearClockMouseLeaveTimer:function(){clearTimeout(this.outTimer)},clickTimer:function(){if(!this.timerRunning){this.startClock()}else{this.stopClock()}},setupCaptions:function(){this.$caption=b(this.captionHTML);this.$wrapper.append(this.$caption);this.setCaption()},setCaption:function(){var d=this.currentSlide().attr("data-caption"),c;if(!this.options.captions){return false}if(d){if(b.trim(b(d).text()).length<1){return false}if(d.charAt(0)=="#"){d=d.substring(1,d.length)}c=b(d).html();this.$caption.attr("id",d).html(c);switch(this.options.captionAnimation){case"none":this.$caption.show();break;case"fade":this.$caption.fadeIn(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideDown(this.options.captionAnimationSpeed);break}}else{switch(this.options.captionAnimation){case"none":this.$caption.hide();break;case"fade":this.$caption.fadeOut(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideUp(this.options.captionAnimationSpeed);break}}},setupDirectionalNav:function(){var c=this,d=b(this.directionalNavHTML);d.find(".right").html(this.options.directionalNavRightText);d.find(".left").html(this.options.directionalNavLeftText);this.$wrapper.append(d);this.$wrapper.find(".left").click(function(){c.stopClock();if(c.options.resetTimerOnClick){c.rotateTimer(true);c.startClock()}c.$element.trigger("orbit.prev")});this.$wrapper.find(".right").click(function(){c.stopClock();if(c.options.resetTimerOnClick){c.rotateTimer(true);c.startClock()}c.$element.trigger("orbit.next")})},setupBulletNav:function(){this.$bullets=b(this.bulletHTML);this.$wrapper.append(this.$bullets);this.$slides.each(this.addBullet);this.$element.addClass("with-bullets");if(this.options.centerBullets){this.$bullets.css("margin-left",-this.$bullets.outerWidth()/2)}},addBullet:function(g,e){var d=g+1,h=b("<li>"+(d)+"</li>"),c,f=this;if(this.options.bulletThumbs){c=b(e).attr("data-thumb");if(c){h.addClass("has-thumb").css({background:"url("+this.options.bulletThumbLocation+c+") no-repeat"})}}this.$bullets.append(h);h.data("index",g);h.click(function(){f.stopClock();if(f.options.resetTimerOnClick){f.rotateTimer(true);f.startClock()}f.$element.trigger("orbit.goto",[h.data("index")])})},setActiveBullet:function(){if(!this.options.bullets){return false}else{this.$bullets.find("li").removeClass("active").eq(this.activeSlide).addClass("active")}},resetAndUnlock:function(){this.$slides.eq(this.prevActiveSlide).css({"z-index":1});this.unlock();this.options.afterSlideChange.call(this,this.$slides.eq(this.prevActiveSlide),this.$slides.eq(this.activeSlide))},shift:function(d){var c=d;this.prevActiveSlide=this.activeSlide;if(this.prevActiveSlide==c){return false}if(this.$slides.length=="1"){return false}if(!this.locked){this.lock();if(d=="next"){this.activeSlide++;if(this.activeSlide==this.numberSlides){this.activeSlide=0}}else{if(d=="prev"){this.activeSlide--;if(this.activeSlide<0){this.activeSlide=this.numberSlides-1}}else{this.activeSlide=d;if(this.prevActiveSlide<this.activeSlide){c="next"}else{if(this.prevActiveSlide>this.activeSlide){c="prev"}}}}this.setActiveBullet();this.notifySlideChange();this.$slides.eq(this.prevActiveSlide).css({"z-index":2});if(this.options.animation=="fade"){this.$slides.eq(this.activeSlide).css({opacity:0,"z-index":3}).animate({opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({opacity:0},this.options.animationSpeed)}if(this.options.animation=="horizontal-slide"){if(c=="next"){this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).css("opacity",1).animate({left:0},this.options.animationSpeed,this.resetAndUnlock)}if(c=="prev"){this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).css("opacity",1).animate({left:0},this.options.animationSpeed,this.resetAndUnlock)}this.$slides.eq(this.prevActiveSlide).css("opacity",0)}if(this.options.animation=="vertical-slide"){if(c=="prev"){this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).css("opacity",0)}if(c=="next"){this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock)}this.$slides.eq(this.prevActiveSlide).css("opacity",0)}if(this.options.animation=="horizontal-push"){if(c=="next"){this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).animate({left:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({left:-this.orbitWidth},this.options.animationSpeed,"",function(){b(this).css({opacity:0})})}if(c=="prev"){this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).animate({left:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({left:this.orbitWidth},this.options.animationSpeed,"",function(){b(this).css({opacity:0})})}}if(this.options.animation=="vertical-push"){if(c=="next"){this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).css("opacity",0).animate({top:this.orbitHeight},this.options.animationSpeed,"")}if(c=="prev"){this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).css("opacity",0).animate({top:-this.orbitHeight},this.options.animationSpeed)}}this.setCaption()}if(this.$slides.last()&&this.options.singleCycle){this.stopClock()}}};b.fn.orbit=function(c){return this.each(function(){var d=b.extend({},a);d.init(this,c)})}})(jQuery);
-/*!
- * jQuery imageready Plugin
- * http://www.zurb.com/playground/
- *
- * Copyright 2011, ZURB
- * Released under the MIT License
- */
-(function(c){var b={};c.event.special.imageready={setup:function(f,e,d){b=f||b},add:function(d){var e=c(this),f;if(this.nodeType===1&&this.tagName.toLowerCase()==="img"&&this.src!==""){if(b.forceLoad){f=e.attr("src");e.attr("src","");a(this,d.handler);e.attr("src",f)}else{if(this.complete||this.readyState===4){d.handler.apply(this,arguments)}else{a(this,d.handler)}}}},teardown:function(d){c(this).unbind(".imageready")}};function a(d,f){var e=c(d);e.bind("load.imageready",function(){f.apply(d,arguments);e.unbind("load.imageready")})}}(jQuery));var Holder=Holder||{};(function(b,g){var l=false,f=false,a=document.createElement("canvas");function e(w,I){var x="complete",J="readystatechange",H=!1,A=H,D=!0,z=w.document,F=z.documentElement,C=z.addEventListener?"addEventListener":"attachEvent",G=z.addEventListener?"removeEventListener":"detachEvent",B=z.addEventListener?"":"on",p=function(n){(n.type!=J||z.readyState==x)&&((n.type=="load"?w:z)[G](B+n.type,p,H),!A&&(A=!0)&&I.call(w,null))},q=function(){try{F.doScroll("left")}catch(o){setTimeout(q,50);return}p("poll")};if(z.readyState==x){I.call(w,"lazy")}else{if(z.createEventObject&&F.doScroll){try{D=!w.frameElement}catch(E){}D&&q()}z[C](B+"DOMContentLoaded",p,H),z[C](B+J,p,H),w[C](B+"load",p,H)}}function d(o){o=o.match(/^(\W)?(.*)/);var n=document["getElement"+(o[1]?o[1]=="#"?"ById":"sByClassName":"sByTagName")](o[2]);var p=[];n!=null&&(n.length?p=n:n.length==0?p=n:p=[n]);return p}function i(o,n){var r={};for(var q in o){r[q]=o[q]}for(var p in n){r[p]=n[p]}return r}function k(o,s,q){var p=[s.height,s.width].sort();var u=Math.round(p[1]/16),n=Math.round(p[0]/16);var r=Math.max(q.size,u);a.width=s.width;a.height=s.height;o.textAlign="center";o.textBaseline="middle";o.fillStyle=q.background;o.fillRect(0,0,s.width,s.height);o.fillStyle=q.foreground;o.font="bold "+r+"px sans-serif";var t=q.text?q.text:(s.width+"x"+s.height);if(Math.round(o.measureText(t).width)/s.width>1){r=Math.max(n,q.size)}o.font="bold "+r+"px sans-serif";o.fillText(t,(s.width/2),(s.height/2),s.width);return a.toDataURL("image/png")}if(!a.getContext){f=true}else{if(a.toDataURL("image/png").indexOf("data:image/png")<0){f=true}else{var m=a.getContext("2d")}}var c={domain:"holder.js",images:"img",themes:{gray:{background:"#eee",foreground:"#aaa",size:12},social:{background:"#3a5a97",foreground:"#fff",size:12},industrial:{background:"#434A52",foreground:"#C2F200",size:12}}};b.flags={dimensions:{regex:/([0-9]+)x([0-9]+)/,output:function(o){var n=this.regex.exec(o);return{width:+n[1],height:+n[2]}}},colors:{regex:/#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,output:function(o){var n=this.regex.exec(o);return{size:c.themes.gray.size,foreground:"#"+n[2],background:"#"+n[1]}}},text:{regex:/text\:(.*)/,output:function(n){return this.regex.exec(n)[1]}}};for(var h in b.flags){b.flags[h].match=function(n){return n.match(this.regex)}}b.add_theme=function(n,o){n!=null&&o!=null&&(c.themes[n]=o);return b};b.add_image=function(s,q){var r=d(q);if(r.length){for(var p=0,n=r.length;p<n;p++){var o=document.createElement("img");o.setAttribute("data-src",s);r[p].appendChild(o)}}return b};b.run=function(s){var A=i(c,s),x=d(A.images),y=true;for(var u=x.length,w=0;w<u;w++){var v=c.themes.gray;var p=x[w].getAttribute("data-src")||x[w].getAttribute("src");if(!!~p.indexOf(A.domain)){var r=false,n=null,z=null;var t=p.substr(p.indexOf(A.domain)+A.domain.length+1).split("/");for(sl=t.length,j=0;j<sl;j++){if(b.flags.dimensions.match(t[j])){r=true;n=b.flags.dimensions.output(t[j])}else{if(b.flags.colors.match(t[j])){v=b.flags.colors.output(t[j])}else{if(A.themes[t[j]]){v=A.themes[t[j]]}else{if(b.flags.text.match(t[j])){z=b.flags.text.output(t[j])}}}}}if(r){x[w].setAttribute("data-src",p);var q=n.width+"x"+n.height;x[w].setAttribute("alt",z?z:v.text?v.text+" ["+q+"]":q);x[w].style.backgroundColor=v.background;var v=(z?i(v,{text:z}):v);if(!f){x[w].setAttribute("src",k(m,n,v))}}}}return b};e(g,function(){l||b.run()})})(Holder,window);(function(b){var a=false;b(document).on("click","a[data-reveal-id]",function(d){d.preventDefault();var c=b(this).attr("data-reveal-id");b("#"+c).reveal(b(this).data())});b.fn.reveal=function(c){var e=b(document),d={animation:"fadeAndPop",animationSpeed:300,closeOnBackgroundClick:true,dismissModalClass:"close-reveal-modal",open:b.noop,opened:b.noop,close:b.noop,closed:b.noop};c=b.extend({},d,c);return this.not(".reveal-modal.open").each(function(){var s=b(this),k=parseInt(s.css("top"),10),n=s.height()+k,m=false,i=b(".reveal-modal-bg"),l={open:{top:0,opacity:0,visibility:"visible",display:"block"},close:{top:k,opacity:1,visibility:"hidden",display:"none"}},h;if(i.length===0){i=b("<div />",{"class":"reveal-modal-bg"}).insertAfter(s);i.fadeTo("fast",0.8)}function o(){m=false}function t(){m=true}function q(){var u=b(".reveal-modal.open");if(u.length===1){a=true;u.trigger("reveal:close")}}function p(){if(!m){t();q();s.addClass("open");if(c.animation==="fadeAndPop"){l.open.top=e.scrollTop()-n;l.open.opacity=0;s.css(l.open);i.fadeIn(c.animationSpeed/2);s.delay(c.animationSpeed/2).animate({top:e.scrollTop()+k+"px",opacity:1},c.animationSpeed,function(){s.trigger("reveal:opened")})}if(c.animation==="fade"){l.open.top=e.scrollTop()+k;l.open.opacity=0;s.css(l.open);i.fadeIn(c.animationSpeed/2);s.delay(c.animationSpeed/2).animate({opacity:1},c.animationSpeed,function(){s.trigger("reveal:opened")})}if(c.animation==="none"){l.open.top=e.scrollTop()+k;l.open.opacity=1;s.css(l.open);i.css({display:"block"});s.trigger("reveal:opened")}}}function f(){var v=s.find(".flex-video"),u=v.find("iframe");if(u.length>0){u.attr("src",u.data("src"));v.fadeIn(100)}}s.bind("reveal:open.reveal",p);s.bind("reveal:open.reveal",f);function j(){if(!m){t();s.removeClass("open");if(c.animation==="fadeAndPop"){s.animate({top:e.scrollTop()-n+"px",opacity:0},c.animationSpeed/2,function(){s.css(l.close)});if(!a){i.delay(c.animationSpeed).fadeOut(c.animationSpeed,function(){s.trigger("reveal:closed")})}else{s.trigger("reveal:closed")}}if(c.animation==="fade"){s.animate({opacity:0},c.animationSpeed,function(){s.css(l.close)});if(!a){i.delay(c.animationSpeed).fadeOut(c.animationSpeed,function(){s.trigger("reveal:closed")})}else{s.trigger("reveal:closed")}}if(c.animation==="none"){s.css(l.close);if(!a){i.css({display:"none"})}s.trigger("reveal:closed")}a=false}}function r(){s.unbind(".reveal");i.unbind(".reveal");h.unbind(".reveal");b("body").unbind(".reveal")}function g(){var v=s.find(".flex-video"),u=v.find("iframe");if(u.length>0){u.data("src",u.attr("src"));u.attr("src","");v.fadeOut(100)}}s.bind("reveal:close.reveal",j);s.bind("reveal:closed.reveal",g);s.bind("reveal:opened.reveal reveal:closed.reveal",o);s.bind("reveal:closed.reveal",r);s.bind("reveal:open.reveal",c.open);s.bind("reveal:opened.reveal",c.opened);s.bind("reveal:close.reveal",c.close);s.bind("reveal:closed.reveal",c.closed);s.trigger("reveal:open");h=b("."+c.dismissModalClass).bind("click.reveal",function(){s.trigger("reveal:close")});if(c.closeOnBackgroundClick){i.css({cursor:"pointer"});i.bind("click.reveal",function(){s.trigger("reveal:close")})}b("body").bind("keyup.reveal",function(u){if(u.which===27){s.trigger("reveal:close")}})})}}(jQuery));(function(e,d,a,f){var c={callback:e.noop,init:false},b={init:function(g){c=e.extend({},g,c);return this.each(function(){if(!c.init){b.events()}})},events:function(){e(a).on("click.fndtn",".tabs a",function(g){b.set_tab(e(this).parent("dd, li"),g)});c.init=true},set_tab:function(j,l){var i=j.closest("dl, ul").find(".active"),k=j.children("a").attr("href"),h=/^#/.test(k),g=e(k+"Tab");if(h&&g.length>0){l.preventDefault();g.closest(".tabs-content").children("li").removeClass("active").hide();g.css("display","block").addClass("active")}i.removeClass("active");j.addClass("active");c.callback()}};e.fn.foundationTabs=function(g){if(b[g]){return b[g].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof g==="object"||!g){return b.init.apply(this,arguments)}else{e.error("Method "+g+" does not exist on jQuery.foundationTabs")}}}}(jQuery,this,this.document));(function(d,c,e){var b={bodyHeight:0,selector:".has-tip",additionalInheritableClasses:[],tooltipClass:".tooltip",tipTemplate:function(f,g){return'<span data-selector="'+f+'" class="'+b.tooltipClass.substring(1)+'">'+g+'<span class="nub"></span></span>'}},a={init:function(f){b=d.extend(b,f);b.selector=b.targetClass?b.targetClass:b.selector;return this.each(function(){var g=d("body");if(Modernizr.touch){g.on("click.tooltip touchstart.tooltip touchend.tooltip",b.selector,function(h){h.preventDefault();d(b.tooltipClass).hide();a.showOrCreateTip(d(this))});g.on("click.tooltip touchstart.tooltip touchend.tooltip",b.tooltipClass,function(h){h.preventDefault();d(this).fadeOut(150)})}else{g.on("mouseenter.tooltip mouseleave.tooltip",b.selector,function(i){var h=d(this);if(i.type==="mouseenter"){a.showOrCreateTip(h)}else{if(i.type==="mouseleave"){a.hide(h)}}})}d(this).data("tooltips",true)})},showOrCreateTip:function(f){var g=a.getTip(f);if(g&&g.length>0){a.show(f)}else{a.create(f)}},getTip:function(g){var f=a.selector(g),h=null;if(f){h=d("span[data-selector="+f+"]"+b.tooltipClass)}return(h.length>0)?h:false},selector:function(f){var h=f.attr("id"),g=f.data("selector");if(h===e&&g===e){g="tooltip"+Math.random().toString(36).substring(7);f.attr("data-selector",g)}return(h)?h:g},create:function(f){var h=d(b.tipTemplate(a.selector(f),d("<div>").html(f.attr("title")).html())),g=a.inheritable_classes(f);h.addClass(g).appendTo("body");if(Modernizr.touch){h.append('<span class="tap-to-close">tap to close </span>')}f.removeAttr("title");a.show(f)},reposition:function(j,m,h){var f,n,l,i,g,k;m.css("visibility","hidden").show();f=j.data("width");n=m.children(".nub");l=n.outerHeight();i=n.outerWidth();k=function(t,s,p,o,r,q){return t.css({top:s,bottom:o,left:r,right:p,width:(q)?q:"auto"}).end()};k(m,(j.offset().top+j.outerHeight()+10),"auto","auto",j.offset().left,f);k(n,-l,"auto","auto",10);if(d(c).width()<767){g=j.closest(".columns");if(g.length<0){g=d("body")}m.width(g.outerWidth()-25).css("left",15).addClass("tip-override");k(n,-l,"auto","auto",j.offset().left)}else{if(h&&h.indexOf("tip-top")>-1){k(m,(j.offset().top-m.outerHeight()-l),"auto","auto",j.offset().left,f).removeClass("tip-override");k(n,"auto","auto",-l,"auto")}else{if(h&&h.indexOf("tip-left")>-1){k(m,(j.offset().top+(j.outerHeight()/2)-l),"auto","auto",(j.offset().left-m.outerWidth()-10),f).removeClass("tip-override");k(n,(m.outerHeight()/2)-(l/2),-l,"auto","auto")}else{if(h&&h.indexOf("tip-right")>-1){k(m,(j.offset().top+(j.outerHeight()/2)-l),"auto","auto",(j.offset().left+j.outerWidth()+10),f).removeClass("tip-override");k(n,(m.outerHeight()/2)-(l/2),"auto","auto",-l)}}}}m.css("visibility","visible").hide()},inheritable_classes:function(i){var h=["tip-top","tip-left","tip-bottom","tip-right","noradius"].concat(b.additionalInheritableClasses),g=i.attr("class"),f=g?d.map(g.split(" "),function(k,j){if(d.inArray(k,h)!==-1){return k}}).join(" "):"";return d.trim(f)},show:function(f){var g=a.getTip(f);a.reposition(f,g,f.attr("class"));g.fadeIn(150)},hide:function(f){var g=a.getTip(f);g.fadeOut(150)},reload:function(){var f=d(this);return(f.data("tooltips"))?f.foundationTooltips("destroy").foundationTooltips("init"):f.foundationTooltips("init")},destroy:function(){return this.each(function(){d(c).off(".tooltip");d(b.selector).off(".tooltip");d(b.tooltipClass).each(function(f){d(d(b.selector).get(f)).attr("title",d(this).text())}).remove()})}};d.fn.foundationTooltips=function(f){if(a[f]){return a[f].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof f==="object"||!f){return a.init.apply(this,arguments)}else{d.error("Method "+f+" does not exist on jQuery.foundationTooltips")}}}}(jQuery,this));(function(d,c,e){var b={index:0,initialized:false},a={init:function(f){return this.each(function(){b=d.extend(b,f);b.$w=d(c),b.$topbar=d("nav.top-bar"),b.$section=b.$topbar.find("section"),b.$titlebar=b.$topbar.children("ul:first");var g=d("<div class='top-bar-js-breakpoint'/>").appendTo("body");b.breakPoint=g.width();g.remove();if(!b.initialized){a.assemble();b.initialized=true}if(!b.height){a.largestUL()}if(b.$topbar.parent().hasClass("fixed")){d("body").css("padding-top",b.$topbar.outerHeight())}d(".top-bar .toggle-topbar").die("click.fndtn").live("click.fndtn",function(h){h.preventDefault();if(a.breakpoint()){b.$topbar.toggleClass("expanded");b.$topbar.css("min-height","")}if(!b.$topbar.hasClass("expanded")){b.$section.css({left:"0%"});b.$section.find(">.name").css({left:"100%"});b.$section.find("li.moved").removeClass("moved");b.index=0}});d(".top-bar .has-dropdown>a").die("click.fndtn").live("click.fndtn",function(j){if(Modernizr.touch||a.breakpoint()){j.preventDefault()}if(a.breakpoint()){var i=d(this),h=i.closest("li");b.index+=1;h.addClass("moved");b.$section.css({left:-(100*b.index)+"%"});b.$section.find(">.name").css({left:100*b.index+"%"});i.siblings("ul").height(b.height+b.$titlebar.outerHeight(true));b.$topbar.css("min-height",b.height+b.$titlebar.outerHeight(true)*2)}});d(c).on("resize.fndtn.topbar",function(){if(!a.breakpoint()){b.$topbar.css("min-height","")}});d(".top-bar .has-dropdown .back").die("click.fndtn").live("click.fndtn",function(k){k.preventDefault();var j=d(this),i=j.closest("li.moved"),h=i.parent();b.index-=1;b.$section.css({left:-(100*b.index)+"%"});b.$section.find(">.name").css({left:100*b.index+"%"});if(b.index===0){b.$topbar.css("min-height",0)}setTimeout(function(){i.removeClass("moved")},300)})})},breakpoint:function(){return b.$w.width()<b.breakPoint},assemble:function(){b.$section.detach();b.$section.find(".has-dropdown>a").each(function(){var f=d(this),h=f.siblings(".dropdown"),g=d('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');g.find("h5>a").html(f.html());h.prepend(g)});b.$section.appendTo(b.$topbar)},largestUL:function(){var g=b.$topbar.find("section ul ul"),h=g.first(),f=0;g.each(function(){if(d(this).children("li").length>h.children("li").length){h=d(this)}});h.children("li").each(function(){f+=d(this).outerHeight(true)});b.height=f}};d.fn.foundationTopBar=function(f){if(a[f]){return a[f].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof f==="object"||!f){return a.init.apply(this,arguments)}else{d.error("Method "+f+" does not exist on jQuery.foundationTopBar")}}}}(jQuery,this));/*! http://mths.be/placeholder v2.0.7 by @mathias */
-(function(g,i,d){var a="placeholder" in i.createElement("input"),e="placeholder" in i.createElement("textarea"),j=d.fn,c=d.valHooks,l,k;if(a&&e){k=j.placeholder=function(){return this};k.input=k.textarea=true}else{k=j.placeholder=function(){var m=this;m.filter((a?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":b,"blur.placeholder":f}).data("placeholder-enabled",true).trigger("blur.placeholder");return m};k.input=a;k.textarea=e;l={get:function(n){var m=d(n);return m.data("placeholder-enabled")&&m.hasClass("placeholder")?"":n.value},set:function(n,o){var m=d(n);if(!m.data("placeholder-enabled")){return n.value=o}if(o==""){n.value=o;if(n!=i.activeElement){f.call(n)}}else{if(m.hasClass("placeholder")){b.call(n,true,o)||(n.value=o)}else{n.value=o}}return m}};a||(c.input=l);e||(c.textarea=l);d(function(){d(i).delegate("form","submit.placeholder",function(){var m=d(".placeholder",this).each(b);setTimeout(function(){m.each(f)},10)})});d(g).bind("beforeunload.placeholder",function(){d(".placeholder").each(function(){this.value=""})})}function h(n){var m={},o=/^jQuery\d+$/;d.each(n.attributes,function(q,p){if(p.specified&&!o.test(p.name)){m[p.name]=p.value}});return m}function b(n,o){var m=this,p=d(m);if(m.value==p.attr("placeholder")&&p.hasClass("placeholder")){if(p.data("placeholder-password")){p=p.hide().next().show().attr("id",p.removeAttr("id").data("placeholder-id"));if(n===true){return p[0].value=o}p.focus()}else{m.value="";p.removeClass("placeholder");m==i.activeElement&&m.select()}}}function f(){var r,m=this,q=d(m),n=q,p=this.id;if(m.value==""){if(m.type=="password"){if(!q.data("placeholder-textinput")){try{r=q.clone().attr({type:"text"})}catch(o){r=d("<input>").attr(d.extend(h(this),{type:"text"}))}r.removeAttr("name").data({"placeholder-password":true,"placeholder-id":p}).bind("focus.placeholder",b);q.data({"placeholder-textinput":r,"placeholder-id":p}).before(r)}q=q.removeAttr("id").hide().prev().attr("id",p).show()}q.addClass("placeholder");q[0].value=q.attr("placeholder")}else{q.removeClass("placeholder")}}}(this,document,jQuery));
\ No newline at end of file
diff --git a/template/js/jquery-1.8.3.min.js b/template/js/jquery-1.8.3.min.js
new file mode 100644
index 0000000..3883779
--- /dev/null
+++ b/template/js/jquery-1.8.3.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v1.8.3 jquery.com | jquery.org/license */
+(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
\ No newline at end of file
diff --git a/template/js/modernizr.foundation.js b/template/js/modernizr.foundation.js
new file mode 100644
index 0000000..e5afa6c
--- /dev/null
+++ b/template/js/modernizr.foundation.js
@@ -0,0 +1,4 @@
+/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
+ * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load
+ */
+;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},o.svg=function(){return!!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==n.svg},o.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")))};for(var D in o)x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))},Modernizr.addTest("ie8compat",function(){return!window.addEventListener&&document.documentMode&&document.documentMode===7});
diff --git a/template/js/plugin/imodal.js b/template/js/plugin/imodal.js
deleted file mode 100755
index 1b3c7ab..0000000
--- a/template/js/plugin/imodal.js
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- * Interspire Modal 1.0
- * (c) 2008 Interspire Pty. Ltd.
- *
- * Based on SimpleModal 1.1.1 - jQuery Plugin
- * http://www.ericmmartin.com/projects/simplemodal/
- * http://plugins.jquery.com/project/SimpleModal
- * http://code.google.com/p/simplemodal/
- *
- * Copyright (c) 2007 Eric Martin - http://ericmmartin.com
- *
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
- *
- * Revision: $Id$
- *
- */
-(function ($) {
-	$.iModal = function(options) {
-		return $.iModal.modal.init(options);
-	};
-
-	$.modal = function() {
-	};
-
-	$.modal.close = function () {
-		return $.iModal.modal.close(true);
-	};
-
-	$.iModal.close = function () {
-		return $.iModal.modal.close(true);
-	};
-
-	$.fn.iModal = function (options) {
-		options = $.extend({}, {
-			type: 'inline',
-			inline: $(this).html()
-		}, options);
-		return $.iModal.modal.init(options);
-	};
-
-	$.iModal.defaults = {
-		overlay: 40,
-		overlayCss: {},
-		containerCss: {},
-		close: true,
-		closeTitle: 'Close',
-		closeTxt: false,
-		onOpen: null,
-		onShow: null,
-		onClose: null,
-		onBeforeClose: null,
-		onAjaxError: null,
-		type: 'string',
-		width: '750',
-		height: 'auto',
-		buttons: '',
-		title: '',
-		method: 'get',
-		top: '15%'
-	};
-
-	$.iModal.modal = {
-		options: null,
-		init: function(options) {
-			// Can\'t have more than one modal window open at a time
-			if($('#ModalContentContainer').length > 0) {
-				return this;
-			}
-			this.options = $.extend({}, $.iModal.defaults, options);
-
-			if(this.options.type == 'inline') {
-				this.options.data = $(this.options.inline).html();
-				$(this.options.inline).html('');
-			}
-
-			this.generateModal();
-			return this;
-		},
-
-		checkHeight: function() {
-			var winHeight = $(window).height(),
-				modalHeight = $("#ModalContentContainer").height(),
-				top;
-
-			if ((modalHeight > winHeight * .85) ||
-					(($.iModal.modal.options.scrollable) && ((winHeight * .85) < $.iModal.modal.options.height))){
-				// modal height spans below the fold
-
-				// use 15% of the remaining win height as top
-				top = Math.max(0, (winHeight - modalHeight) * 0.15);
-
-				// this stays until window height changes
-				top += $(window).scrollTop();
-				$("#ModalContainer").css({
-					position: 'absolute',
-					top: (top + 'px')
-				});
-
-				//if the window height is less than modal height, show smaller modal with scroll
-				if ($.iModal.modal.options.scrollable) {
-					if ((winHeight * .85) < $.iModal.modal.options.height){
-						var diff = $.iModal.modal.options.height - $.iModal.modal.options.contentHeight;
-						$("#ModalContent").css({
-							overflow: 'auto',
-							height: ((winHeight - diff) * .75)+'px'
-						});
-
-						$("#ModalContainer").css({height: (winHeight * .80) +'px'});
-						$(".ModalButtonRow").css('padding-right', '30px');
-
-
-					}
-					else if ($.iModal.modal.options.height < modalHeight){
-						$("#ModalContent").css({
-							overflow: 'auto',
-							height: $.iModal.modal.options.contentHeight+'px'
-						});
-
-						$("#ModalContainer").css({height: $.iModal.modal.options.height +'px'});
-						$(".ModalButtonRow").css('padding-right', '15px');
-					}
-					else if ((winHeight * .85) < modalHeight)
-					{
-						var diff = $.iModal.modal.options.height - $.iModal.modal.options.contentHeight;
-						$("#ModalContent").css({
-							overflow: 'auto',
-							height: ((modalHeight -diff) * .75)+'px'});
-						$("#ModalContainer").css({height: (modalHeight * .80)+'px'});
-						$(".ModalButtonRow").css('padding-right', '30px');
-					}
-				}
-			}
-			else {
-				$("#ModalContainer").css({
-					position: 'absolute',
-					top: '15%'
-				});
-
-				if ($.iModal.modal.options.scrollable) {
-					$("#ModalContainer").css({height: $.iModal.modal.options.height +'px'});
-					$("#ModalContent").css({height: $.iModal.modal.options.contentHeight +'px'});
-					$(".ModalButtonRow").css('padding-right', '15px');
-				}
-			}
-		},
-
-		ajaxError: function(xhr, status, error)
-		{
-			this.hideLoader();
-			if ($.isFunction(this.options.onAjaxError)) {
-				this.options.onAjaxError.apply(this, [xhr, status, error]);
-			}
-		},
-
-		createFrame: function(container, html)
-		{
-	    	var frame = $('<iframe />').width('100%').attr('frameBorder', '0').appendTo(container)[0];
-
-			// Grab the frame's document object
-	    	var frameDoc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument;
-	    	frameDoc.open(); frameDoc.write(html); frameDoc.close();
-
-			// Auto adjust the iframe's height to the height of the content
-			$(frameDoc).ready(function(){
-				var height = frameDoc.body.scrollHeight + 20;
-
-				$(frame).height(height);
-			});
-		},
-
-		displayModal: function(data)
-		{
-			if (typeof data == 'object' && typeof data.imodal == 'string') {
-				// this allows imodal to recognise an object (json) response so long as the response contains an imodal
-				// string property
-				data = data.imodal;
-			}
-
-			this.hideLoader();
-			modalContent = '';
-			if(!$.browser.msie || $.browser.version >= 7) {
-				modalContent = '';
-			}
-			if(data.indexOf('ModalTitle')>0 && data.indexOf('ModalContent')>0){
-				modalContent += '<div id="ModalContentContainer">'+data+'</div>';
-			}else{
-				buttons = '';
-				if(this.options.buttons) {
-					buttons = '<div class="ModalButtonRow">'+this.options.buttons+'</div>';
-				}
-				modalContent += '<div id="ModalContentContainer"><div class="ModalTitle">'+this.options.title+'</div><div class="ModalContent">'+data+ '</div>'+buttons+'</div>';
-			}
-
-			cssProperties = {
-				position: 'absolute',
-				zIndex: 3100,
-				width: this.options.width+'px',
-				height: this.options.height+'px'
-			};
-
-			if($.browser.msie && $.browser.version < 7) {
-				cssProperties.position = 'absolute';
-			}
-
-			// If direction is rtl then we need to flip our margin positions
-			if ($.browser.msie && $.browser.version <= 7 && $('body').css('direction') == 'rtl') {
-				cssProperties.marginRight = (this.options.width/2)+'px';
-			} else {
-				cssProperties.marginLeft = '-'+(this.options.width/2)+'px';
-			}
-
-			cssProperties.top = this.options.top;
-
-			var stupidity = $('<div>')
-				.attr('id', 'ModalContainer')
-				.addClass('modalContainer')
-				.css(cssProperties)
-				.hide()
-				.appendTo('body')
-				.html('<div class="modalData">'+modalContent+'</div>');
-
-
-            if(this.options.className) {
-                stupidity.addClass(this.options.className);
-            }
-			if($('#ModalContainer').find('.ModalButtonRow, #ModalButtonRow').length > 0) {
-				$('#ModalContainer').addClass('ModalContentWithButtons');
-			}
-			if(this.options.close) {
-				modal = this;
-				$('<a/>')
-					.addClass('modalClose')
-					.html('<i class="icon-remove"></i>')
-					.attr('title', this.options.closeTitle)
-					.appendTo('#ModalContainer')
-					.click(function(e) {
-						e.preventDefault();
-						modal.close();
-					})
-				;
-				$(document).bind('keypress', function(e) {
-					if(e.keyCode == 27) {
-						$('#ModalContainer .modalClose').click();
-					}
-				});
-
-				if (this.options.closeTxt) {
-					$('#ModalContainer .modalClose')
-						.html(this.options.closeTitle)
-						.css('backgroundPosition', '65px 0')
-						.css('lineHeight', '15px')
-						.css('textDecoration', 'none')
-						.css('width', '60px')
-						.css('paddingRight', '20px')
-						.css('textAlign', 'right')
-					;
-					$('#ModalContainer .ModalTitle')
-						.css('borderBottom', 'medium none')
-						.css('backgroundColor', '#fff')
-					;
-					$('#ModalContainer #ModalTopBorder').css('backgroundImage', 'none');
-				}
-			}
-
-			if($.isFunction(this.options.onOpen)) {
-				this.options.onOpen.apply(this);
-			}
-			else {
-				$('#ModalContainer').show();
-				if($.isFunction(this.options.onShow)) {
-					this.options.onShow.apply(this);
-				}
-			}
-
-			if (this.options.scrollable) {
-				var container = $("#ModalContent");
-				container.css('overflow', 'auto');
-				$(".ModalButtonRow").css('padding-top', '10px');
-
-				this.checkHeight();
-			}
-
-			// make sure we can see the bottom part of the modal
-			// if the window size is too short
-
-			/*$(window)
-				.resize(this.checkHeight)
-				.scroll(this.checkHeight)
-			;*/
-		},
-
-		showLoader: function()
-		{
-			$('<div/>')
-				.attr('id', 'ModalLoadingIndicator')
-				.html('<i class="icon-spinner"></i>')
-				.appendTo('body');
-			;
-		},
-
-		showOverlayLoader: function(){
-			$('<div/>')
-				.attr('id', 'ModalOverlay')
-				.addClass('modalOverlay')
-				.css({
-					opacity: 40 / 100,
-					height: '100%',
-					width: '100%',
-					position: 'fixed',
-					left: 0,
-					top: 0,
-					zIndex: 3000
-				})
-				.appendTo('body')
-			;
-
-			$('<div/>')
-				.attr('id', 'ModalLoadingIndicator')
-				.appendTo('body');
-			;
-		},
-
-		hideOverlayLoader: function(){
-			$('#ModalLoadingIndicator').remove();
-			$('.modalOverlay').remove();
-		},
-
-		hideLoader: function()
-		{
-			$('#ModalLoadingIndicator').remove();
-		},
-
-		generateModal: function()
-		{
-			$('<div/>')
-				.attr('id', 'ModalOverlay')
-				.addClass('modalOverlay')
-				.css({
-					opacity: this.options.overlay / 100,
-					height: '100%',
-					width: '100%',
-					position: 'absolute',
-					left: 0,
-					top: 0,
-					zIndex: 3000
-				})
-				.appendTo('body')
-			;
-
-			if($.browser.msie && $.browser.version < 7) {
-				wHeight = $(document.body).height()+'px';
-				wWidth = $(document.body).width()+'px';
-				$('#ModalOverlay').css({
-					position: 'absolute',
-					height: wHeight,
-					width: wWidth
-				});
-				$('<iframe/>')
-					.attr('src', 'javascript:false;')
-					.attr('id', 'ModalTempiFrame')
-					.css({opacity: 0, position: 'absolute', width: wWidth, height: wHeight, zIndex: 1000, top: 0, left: 0})
-					.appendTo('body')
-				;
-			}
-
-			this.showLoader();
-			if(this.options.type == 'ajax') {
-				modal = this;
-				data = {};
-				if(this.options.urlData != undefined) {
-					data = this.options.urlData;
-				}
-				var method = 'get';
-				if (this.options.method) {
-					method = this.options.method;
-				}
-				$.ajax({
-					url: this.options.url,
-					type: method,
-					success: function(data) {
-						modal.displayModal(data);
-					},
-					error: function(xhr, status, error) {
-						modal.ajaxError(xhr, status, error);
-					},
-					data: data,
-					type: this.options.method,
-					global: false
-				});
-			}
-			else if(this.options.type == 'iframe'){
-				modal = this;
-				data = {};
-				if(this.options.urlData != undefined) {
-					data = this.options.urlData;
-				}
-				var method = 'get';
-				if (this.options.method) {
-					method = this.options.method;
-				}
-				$.ajax({
-					url: this.options.url,
-					type: method,
-					success: function(data) {
-						modal.displayModal('');
-						var f = modal.createFrame($('#ModalContentContainer .ModalContent'), data);
-					},
-					error: function(xhr, status, error) {
-						modal.ajaxError(xhr, status, error);
-					},
-					data: data,
-					type: this.options.method,
-					global: false
-				});
-			}
-			else {
-				this.displayModal(this.options.data);
-			}
-		},
-
-		close: function(external)
-		{
-			if (!this.options) {
-				return;
-			}
-
-			if($.isFunction(this.options.onBeforeClose)) {
-				if (this.options.onBeforeClose.apply(this, []) === false) {
-					// prevent modal from closing if onBeforeClose returns (bool)false
-					return;
-				}
-				this.options.onBeforeClose = null; // ISC-3837
-			}
-
-			if(this.options.type == 'inline') {
-				$(this.options.inline).html(this.options.data);
-			}
-
-			if($.isFunction(this.options.onClose) && !external) {
-				this.options.onClose.apply(this);
-			}
-			else {
-				$('#ModalContainer').remove();
-			}
-
-			$('#ModalLoadingIndicator').remove();
-			$('#ModalOverlay').remove();
-			$('#ModalTempiFrame').remove();
-			
-			return false;
-		}
-	};
-})(jQuery);
-
-
-function ModalBox(title, content){
-	var str = '<div class="ModalTitle">'+title+'</div><div class="ModalContent">'+content+ '</div><div class="ModalButtonRow"></div>';
-	$.iModal({ data: str });
-}
-
-function ModalBoxInline(title, content, width, withCloseButton){
-	if(typeof(width) == 'undefined'){
-		var width = 800;
-	}
-	if(typeof(withCloseButton) == 'undefined'){
-		var withCloseButton = false;
-	}
-	if(withCloseButton){
-		var str = '<div class="ModalTitle">'+title+'</div><div class="ModalContent">'+$(content).html()+ '</div><div class="ModalButtonRow"></div>';
-	}else{
-		var str = '<div class="ModalTitle">'+title+'</div><div class="ModalContent">'+$(content).html()+ '</div><div class="ModalButtonRow"><input type="button" class="CloseButton FormButton" value="Close Window" onclick="$.iModal.close();" /></div>';
-	}
-	$.iModal({ 'data': str, 'width':width });
-}
diff --git a/template/js/plugin/jquery-1.8.3.min.js b/template/js/plugin/jquery-1.8.3.min.js
deleted file mode 100755
index 3883779..0000000
--- a/template/js/plugin/jquery-1.8.3.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v1.8.3 jquery.com | jquery.org/license */
-(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
\ No newline at end of file
diff --git a/template/js/plugin/jquery.fancybox-thumbs.js b/template/js/plugin/jquery.fancybox-thumbs.js
deleted file mode 100755
index 5db3d4a..0000000
--- a/template/js/plugin/jquery.fancybox-thumbs.js
+++ /dev/null
@@ -1,162 +0,0 @@
- /*!
- * Thumbnail helper for fancyBox
- * version: 1.0.7 (Mon, 01 Oct 2012)
- * @requires fancyBox v2.0 or later
- *
- * Usage:
- *     $(".fancybox").fancybox({
- *         helpers : {
- *             thumbs: {
- *                 width  : 50,
- *                 height : 50
- *             }
- *         }
- *     });
- *
- */
-(function ($) {
-	//Shortcut for fancyBox object
-	var F = $.fancybox;
-
-	//Add helper object
-	F.helpers.thumbs = {
-		defaults : {
-			width    : 50,       // thumbnail width
-			height   : 50,       // thumbnail height
-			position : 'bottom', // 'top' or 'bottom'
-			source   : function ( item ) {  // function to obtain the URL of the thumbnail image
-				var href;
-
-				if (item.element) {
-					href = $(item.element).find('img').attr('src');
-				}
-
-				if (!href && item.type === 'image' && item.href) {
-					href = item.href;
-				}
-
-				return href;
-			}
-		},
-
-		wrap  : null,
-		list  : null,
-		width : 0,
-
-		init: function (opts, obj) {
-			var that = this,
-				list,
-				thumbWidth  = opts.width,
-				thumbHeight = opts.height,
-				thumbSource = opts.source;
-
-			//Build list structure
-			list = '';
-
-			for (var n = 0; n < obj.group.length; n++) {
-				list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
-			}
-
-			this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position).appendTo('body');
-			this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
-
-			//Load each thumbnail
-			$.each(obj.group, function (i) {
-				var href = thumbSource( obj.group[ i ] );
-
-				if (!href) {
-					return;
-				}
-
-				$("<img />").load(function () {
-					var width  = this.width,
-						height = this.height,
-						widthRatio, heightRatio, parent;
-
-					if (!that.list || !width || !height) {
-						return;
-					}
-
-					//Calculate thumbnail width/height and center it
-					widthRatio  = width / thumbWidth;
-					heightRatio = height / thumbHeight;
-
-					parent = that.list.children().eq(i).find('a');
-
-					if (widthRatio >= 1 && heightRatio >= 1) {
-						if (widthRatio > heightRatio) {
-							width  = Math.floor(width / heightRatio);
-							height = thumbHeight;
-
-						} else {
-							width  = thumbWidth;
-							height = Math.floor(height / widthRatio);
-						}
-					}
-
-					$(this).css({
-						width  : width,
-						height : height,
-						top    : Math.floor(thumbHeight / 2 - height / 2),
-						left   : Math.floor(thumbWidth / 2 - width / 2)
-					});
-
-					parent.width(thumbWidth).height(thumbHeight);
-
-					$(this).hide().appendTo(parent).fadeIn(300);
-
-				}).attr('src', href);
-			});
-
-			//Set initial width
-			this.width = this.list.children().eq(0).outerWidth(true);
-
-			this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)));
-		},
-
-		beforeLoad: function (opts, obj) {
-			//Remove self if gallery do not have at least two items
-			if (obj.group.length < 2) {
-				obj.helpers.thumbs = false;
-
-				return;
-			}
-
-			//Increase bottom margin to give space for thumbs
-			obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15);
-		},
-
-		afterShow: function (opts, obj) {
-			//Check if exists and create or update list
-			if (this.list) {
-				this.onUpdate(opts, obj);
-
-			} else {
-				this.init(opts, obj);
-			}
-
-			//Set active element
-			this.list.children().removeClass('active').eq(obj.index).addClass('active');
-		},
-
-		//Center list
-		onUpdate: function (opts, obj) {
-			if (this.list) {
-				this.list.stop(true).animate({
-					'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))
-				}, 150);
-			}
-		},
-
-		beforeClose: function () {
-			if (this.wrap) {
-				this.wrap.remove();
-			}
-
-			this.wrap  = null;
-			this.list  = null;
-			this.width = 0;
-		}
-	}
-
-}(jQuery));
\ No newline at end of file
diff --git a/template/js/plugin/jquery.fancybox.pack.js b/template/js/plugin/jquery.fancybox.pack.js
deleted file mode 100755
index 73f7578..0000000
--- a/template/js/plugin/jquery.fancybox.pack.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
-(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
-width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
-keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
-(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
-openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
-isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
-c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
-k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
-b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
-setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
-d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
-a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
-b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
-y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
-if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
-(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
-{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
-mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
-!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
-"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
-this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
-f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
-e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
-outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
-g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
-"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
-h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
-h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
-"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
-y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
-!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
-b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
-a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
-(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
-f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
-{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
-b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
-f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
-b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
-p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
-f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
-b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
-e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
-":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
-d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);
\ No newline at end of file
diff --git a/template/js/plugin/jquery.fittext.js b/template/js/plugin/jquery.fittext.js
deleted file mode 100755
index 080b82e..0000000
--- a/template/js/plugin/jquery.fittext.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*global jQuery */
-/*!
-* FitText.js 1.1
-*
-* Copyright 2011, Dave Rupert http://daverupert.com
-* Released under the WTFPL license
-* http://sam.zoy.org/wtfpl/
-*
-* Date: Thu May 05 14:23:00 2011 -0600
-*/
-
-(function( $ ){
-
-  $.fn.fitText = function( kompressor, options ) {
-
-    // Setup options
-    var compressor = kompressor || 1,
-        settings = $.extend({
-          'minFontSize' : Number.NEGATIVE_INFINITY,
-          'maxFontSize' : Number.POSITIVE_INFINITY
-        }, options);
-
-    return this.each(function(){
-
-      // Store the object
-      var $this = $(this);
-
-      // Resizer() resizes items based on the object width divided by the compressor * 10
-      var resizer = function () {
-        $this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
-      };
-
-      // Call once to set.
-      resizer();
-
-      // Call on resize. Opera debounces their resize by default.
-      $(window).on('resize.fittext orientationchange.fittext', resizer);
-
-    });
-
-  };
-
-})( jQuery );
diff --git a/template/js/plugin/jquery.touchwipe.min.js b/template/js/plugin/jquery.touchwipe.min.js
deleted file mode 100755
index fe2d407..0000000
--- a/template/js/plugin/jquery.touchwipe.min.js
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * jQuery Plugin to obtain touch gestures from iPhone, iPod Touch and iPad, should also work with Android mobile phones (not tested yet!)
- * Common usage: wipe images (left and right to show the previous or next image)
- * 
- * @author Andreas Waltl, netCU Internetagentur (http://www.netcu.de)
- * @version 1.1.1 (9th December 2010) - fix bug (older IE's had problems)
- * @version 1.1 (1st September 2010) - support wipe up and wipe down
- * @version 1.0 (15th July 2010)
- */
-(function($){$.fn.touchwipe=function(settings){var config={min_move_x:20,min_move_y:20,wipeLeft:function(){},wipeRight:function(){},wipeUp:function(){},wipeDown:function(){},preventDefaultEvents:true};if(settings)$.extend(config,settings);this.each(function(){var startX;var startY;var isMoving=false;function cancelTouch(){this.removeEventListener('touchmove',onTouchMove);startX=null;isMoving=false}function onTouchMove(e){if(config.preventDefaultEvents){e.preventDefault()}if(isMoving){var x=e.touches[0].pageX;var y=e.touches[0].pageY;var dx=startX-x;var dy=startY-y;if(Math.abs(dx)>=config.min_move_x){cancelTouch();if(dx>0){config.wipeLeft()}else{config.wipeRight()}}else if(Math.abs(dy)>=config.min_move_y){cancelTouch();if(dy>0){config.wipeDown()}else{config.wipeUp()}}}}function onTouchStart(e){if(e.touches.length==1){startX=e.touches[0].pageX;startY=e.touches[0].pageY;isMoving=true;this.addEventListener('touchmove',onTouchMove,false)}}if('ontouchstart'in document.documentElement){this.addEventListener('touchstart',onTouchStart,false)}});return this}})(jQuery);
\ No newline at end of file
diff --git a/template/js/plugin/jquery.validate.js b/template/js/plugin/jquery.validate.js
deleted file mode 100644
index 350de6d..0000000
--- a/template/js/plugin/jquery.validate.js
+++ /dev/null
@@ -1,1169 +0,0 @@
-/**
- * jQuery Validation Plugin 1.8.1
- *
- * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
- * http://docs.jquery.com/Plugins/Validation
- *
- * Copyright (c) 2006 - 2011 Jörn Zaefferer
- *
- * Dual licensed under the MIT and GPL licenses:
- *   http://www.opensource.org/licenses/mit-license.php
- *   http://www.gnu.org/licenses/gpl.html
- */
-
-(function($) {
-
-$.extend($.fn, {
-	// http://docs.jquery.com/Plugins/Validation/validate
-	validate: function( options ) {
-
-		// if nothing is selected, return nothing; can't chain anyway
-		if (!this.length) {
-			options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
-			return;
-		}
-
-		// check if a validator for this form was already created
-		var validator = $.data(this[0], 'validator');
-		if ( validator ) {
-			return validator;
-		}
-
-		validator = new $.validator( options, this[0] );
-		$.data(this[0], 'validator', validator);
-
-		if ( validator.settings.onsubmit ) {
-
-			// allow suppresing validation by adding a cancel class to the submit button
-			this.find("input, button").filter(".cancel").click(function() {
-				validator.cancelSubmit = true;
-			});
-
-			// when a submitHandler is used, capture the submitting button
-			if (validator.settings.submitHandler) {
-				this.find("input, button").filter(":submit").click(function() {
-					validator.submitButton = this;
-				});
-			}
-
-			// validate the form on submit
-			this.submit( function( event ) {
-				if ( validator.settings.debug )
-					// prevent form submit to be able to see console output
-					event.preventDefault();
-
-				function handle() {
-					if ( validator.settings.submitHandler ) {
-						if (validator.submitButton) {
-							// insert a hidden input as a replacement for the missing submit button
-							var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
-						}
-						validator.settings.submitHandler.call( validator, validator.currentForm );
-						if (validator.submitButton) {
-							// and clean up afterwards; thanks to no-block-scope, hidden can be referenced
-							hidden.remove();
-						}
-						return false;
-					}
-					return true;
-				}
-
-				// prevent submit for invalid forms or custom submit handlers
-				if ( validator.cancelSubmit ) {
-					validator.cancelSubmit = false;
-					return handle();
-				}
-				if ( validator.form() ) {
-					if ( validator.pendingRequest ) {
-						validator.formSubmitted = true;
-						return false;
-					}
-					return handle();
-				} else {
-					validator.focusInvalid();
-					return false;
-				}
-			});
-		}
-
-		return validator;
-	},
-	// http://docs.jquery.com/Plugins/Validation/valid
-	valid: function() {
-        if ( $(this[0]).is('form')) {
-            return this.validate().form();
-        } else {
-            var valid = true;
-            var validator = $(this[0].form).validate();
-            this.each(function() {
-				valid &= validator.element(this);
-            });
-            return valid;
-        }
-    },
-	// attributes: space seperated list of attributes to retrieve and remove
-	removeAttrs: function(attributes) {
-		var result = {},
-			$element = this;
-		$.each(attributes.split(/\s/), function(index, value) {
-			result[value] = $element.attr(value);
-			$element.removeAttr(value);
-		});
-		return result;
-	},
-	// http://docs.jquery.com/Plugins/Validation/rules
-	rules: function(command, argument) {
-		var element = this[0];
-
-		if (command) var settings = $.data(element.form, 'validator');
-
-		if (command && typeof settings !== 'undefined') {
-			settings = settings.settings;
-			
-			var staticRules = settings.rules;
-			var existingRules = $.validator.staticRules(element);
-			switch(command) {
-			case "add":
-				$.extend(existingRules, $.validator.normalizeRule(argument));
-				staticRules[element.name] = existingRules;
-				if (argument.messages)
-					settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
-				break;
-			case "remove":
-				if (!argument) {
-					delete staticRules[element.name];
-					return existingRules;
-				}
-				var filtered = {};
-				$.each(argument.split(/\s/), function(index, method) {
-					filtered[method] = existingRules[method];
-					delete existingRules[method];
-				});
-				return filtered;
-			}
-		}
-
-		var data = $.validator.normalizeRules(
-		$.extend(
-			{},
-			$.validator.metadataRules(element),
-			$.validator.classRules(element),
-			$.validator.attributeRules(element),
-			$.validator.staticRules(element)
-		), element);
-
-		// make sure required is at front
-		if (data.required) {
-			var param = data.required;
-			delete data.required;
-			data = $.extend({required: param}, data);
-		}
-
-		return data;
-	}
-});
-
-// Custom selectors
-$.extend($.expr[":"], {
-	// http://docs.jquery.com/Plugins/Validation/blank
-	blank: function(a) {return !$.trim("" + a.value);},
-	// http://docs.jquery.com/Plugins/Validation/filled
-	filled: function(a) {return !!$.trim("" + a.value);},
-	// http://docs.jquery.com/Plugins/Validation/unchecked
-	unchecked: function(a) {return !a.checked;}
-});
-
-// constructor for validator
-$.validator = function( options, form ) {
-	this.settings = $.extend( true, {}, $.validator.defaults, options );
-	this.currentForm = form;
-	this.init();
-};
-
-$.validator.format = function(source, params) {
-	if ( arguments.length == 1 )
-		return function() {
-			var args = $.makeArray(arguments);
-			args.unshift(source);
-			return $.validator.format.apply( this, args );
-		};
-	if ( arguments.length > 2 && params.constructor != Array  ) {
-		params = $.makeArray(arguments).slice(1);
-	}
-	if ( params.constructor != Array ) {
-		params = [ params ];
-	}
-	$.each(params, function(i, n) {
-		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
-	});
-	return source;
-};
-
-$.extend($.validator, {
-
-	defaults: {
-		messages: {},
-		groups: {},
-		rules: {},
-		errorClass: "error",
-		validClass: "valid",
-		errorElement: "label",
-		focusInvalid: true,
-		errorContainer: $( [] ),
-		errorLabelContainer: $( [] ),
-		onsubmit: true,
-		ignore: [],
-		ignoreTitle: false,
-		onfocusin: function(element) {
-			this.lastActive = element;
-
-			// hide error label and remove error class on focus if enabled
-			if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
-				this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
-				this.addWrapper(this.errorsFor(element)).hide();
-			}
-		},
-		onfocusout: function(element) {
-			if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
-				this.element(element);
-			}
-		},
-		onkeyup: function(element) {
-			if ( element.name in this.submitted || element == this.lastElement ) {
-				this.element(element);
-			}
-		},
-		onclick: function(element) {
-			// click on selects, radiobuttons and checkboxes
-			if ( element.name in this.submitted )
-				this.element(element);
-			// or option elements, check parent select in that case
-			else if (element.parentNode.name in this.submitted)
-				this.element(element.parentNode);
-		},
-		highlight: function(element, errorClass, validClass) {
-			if (element.type === 'radio') {
-				this.findByName(element.name).addClass(errorClass).removeClass(validClass);
-			} else {
-				$(element).addClass(errorClass).removeClass(validClass);
-			}
-		},
-		unhighlight: function(element, errorClass, validClass) {
-			if (element.type === 'radio') {
-				this.findByName(element.name).removeClass(errorClass).addClass(validClass);
-			} else {
-				$(element).removeClass(errorClass).addClass(validClass);
-			}
-		}
-	},
-
-	// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
-	setDefaults: function(settings) {
-		$.extend( $.validator.defaults, settings );
-	},
-
-	messages: {
-		required: "This field is required.",
-		remote: "Please fix this field.",
-		email: "Please enter a valid email address.",
-		url: "Please enter a valid URL.",
-		date: "Please enter a valid date.",
-		dateISO: "Please enter a valid date (ISO).",
-		number: "Please enter a valid number.",
-		digits: "Please enter only digits.",
-		creditcard: "Please enter a valid credit card number.",
-		equalTo: "Please enter the same value again.",
-		accept: "Please enter a value with a valid extension.",
-		maxlength: $.validator.format("Please enter no more than {0} characters."),
-		minlength: $.validator.format("Please enter at least {0} characters."),
-		rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
-		range: $.validator.format("Please enter a value between {0} and {1}."),
-		max: $.validator.format("Please enter a value less than or equal to {0}."),
-		min: $.validator.format("Please enter a value greater than or equal to {0}.")
-	},
-
-	autoCreateRanges: false,
-
-	prototype: {
-
-		init: function() {
-			this.labelContainer = $(this.settings.errorLabelContainer);
-			this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
-			this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
-			this.submitted = {};
-			this.valueCache = {};
-			this.pendingRequest = 0;
-			this.pending = {};
-			this.invalid = {};
-			this.reset();
-
-			var groups = (this.groups = {});
-			$.each(this.settings.groups, function(key, value) {
-				$.each(value.split(/\s/), function(index, name) {
-					groups[name] = key;
-				});
-			});
-			var rules = this.settings.rules;
-			$.each(rules, function(key, value) {
-				rules[key] = $.validator.normalizeRule(value);
-			});
-
-			function delegate(event) {
-				var validator = $.data(this[0].form, "validator"),
-					eventType = "on" + event.type.replace(/^validate/, "");
-				validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
-			}
-			$(this.currentForm)
-				.validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
-				.validateDelegate(":radio, :checkbox, select, option", "click", delegate);
-
-			if (this.settings.invalidHandler)
-				$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Validator/form
-		form: function() {
-			this.checkForm();
-			$.extend(this.submitted, this.errorMap);
-			this.invalid = $.extend({}, this.errorMap);
-			if (!this.valid())
-				$(this.currentForm).triggerHandler("invalid-form", [this]);
-			this.showErrors();
-			return this.valid();
-		},
-
-		checkForm: function() {
-			this.prepareForm();
-			for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
-				this.check( elements[i] );
-			}
-			return this.valid();
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Validator/element
-		element: function( element ) {
-			element = this.clean( element );
-			this.lastElement = element;
-			this.prepareElement( element );
-			this.currentElements = $(element);
-			var result = this.check( element );
-			if ( result ) {
-				delete this.invalid[element.name];
-			} else {
-				this.invalid[element.name] = true;
-			}
-			if ( !this.numberOfInvalids() ) {
-				// Hide error containers on last error
-				this.toHide = this.toHide.add( this.containers );
-			}
-			this.showErrors();
-			return result;
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
-		showErrors: function(errors) {
-			if(errors) {
-				// add items to error list and map
-				$.extend( this.errorMap, errors );
-				this.errorList = [];
-				for ( var name in errors ) {
-					this.errorList.push({
-						message: errors[name],
-						element: this.findByName(name)[0]
-					});
-				}
-				// remove items from success list
-				this.successList = $.grep( this.successList, function(element) {
-					return !(element.name in errors);
-				});
-			}
-			this.settings.showErrors
-				? this.settings.showErrors.call( this, this.errorMap, this.errorList )
-				: this.defaultShowErrors();
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
-		resetForm: function() {
-			if ( $.fn.resetForm )
-				$( this.currentForm ).resetForm();
-			this.submitted = {};
-			this.prepareForm();
-			this.hideErrors();
-			this.elements().removeClass( this.settings.errorClass );
-		},
-
-		numberOfInvalids: function() {
-			return this.objectLength(this.invalid);
-		},
-
-		objectLength: function( obj ) {
-			var count = 0;
-			for ( var i in obj )
-				count++;
-			return count;
-		},
-
-		hideErrors: function() {
-			this.addWrapper( this.toHide ).hide();
-		},
-
-		valid: function() {
-			return this.size() == 0;
-		},
-
-		size: function() {
-			return this.errorList.length;
-		},
-
-		focusInvalid: function() {
-			if( this.settings.focusInvalid ) {
-				try {
-					$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
-					.filter(":visible")
-					.focus()
-					// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
-					.trigger("focusin");
-				} catch(e) {
-					// ignore IE throwing errors when focusing hidden elements
-				}
-			}
-		},
-
-		findLastActive: function() {
-			var lastActive = this.lastActive;
-			return lastActive && $.grep(this.errorList, function(n) {
-				return n.element.name == lastActive.name;
-			}).length == 1 && lastActive;
-		},
-
-		elements: function() {
-			var validator = this,
-				rulesCache = {};
-
-			// select all valid inputs inside the form (no submit or reset buttons)
-			return $(this.currentForm)
-			.find("input, select, textarea")
-			.not(":submit, :reset, :image, [disabled]")
-			.not( this.settings.ignore )
-			.filter(function() {
-				!this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
-
-				// select only the first element for each name, and only those with rules specified
-				if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
-					return false;
-
-				rulesCache[this.name] = true;
-				return true;
-			});
-		},
-
-		clean: function( selector ) {
-			return $( selector )[0];
-		},
-
-		errors: function() {
-			return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
-		},
-
-		reset: function() {
-			this.successList = [];
-			this.errorList = [];
-			this.errorMap = {};
-			this.toShow = $([]);
-			this.toHide = $([]);
-			this.currentElements = $([]);
-		},
-
-		prepareForm: function() {
-			this.reset();
-			this.toHide = this.errors().add( this.containers );
-		},
-
-		prepareElement: function( element ) {
-			this.reset();
-			this.toHide = this.errorsFor(element);
-		},
-
-		check: function( element ) {
-			element = this.clean( element );
-
-			// if radio/checkbox, validate first element in group instead
-			if (this.checkable(element)) {
-				element = this.findByName( element.name ).not(this.settings.ignore)[0];
-			}
-
-			var rules = $(element).rules();
-			var dependencyMismatch = false;
-			for (var method in rules ) {
-				var rule = { method: method, parameters: rules[method] };
-				try {
-					var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
-
-					// if a method indicates that the field is optional and therefore valid,
-					// don't mark it as valid when there are no other rules
-					if ( result == "dependency-mismatch" ) {
-						dependencyMismatch = true;
-						continue;
-					}
-					dependencyMismatch = false;
-
-					if ( result == "pending" ) {
-						this.toHide = this.toHide.not( this.errorsFor(element) );
-						return;
-					}
-
-					if( !result ) {
-						this.formatAndAdd( element, rule );
-						return false;
-					}
-				} catch(e) {
-					this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
-						 + ", check the '" + rule.method + "' method", e);
-					throw e;
-				}
-			}
-			if (dependencyMismatch)
-				return;
-			if ( this.objectLength(rules) )
-				this.successList.push(element);
-			return true;
-		},
-
-		// return the custom message for the given element and validation method
-		// specified in the element's "messages" metadata
-		customMetaMessage: function(element, method) {
-			if (!$.metadata)
-				return;
-
-			var meta = this.settings.meta
-				? $(element).metadata()[this.settings.meta]
-				: $(element).metadata();
-
-			return meta && meta.messages && meta.messages[method];
-		},
-
-		// return the custom message for the given element name and validation method
-		customMessage: function( name, method ) {
-			var m = this.settings.messages[name];
-			return m && (m.constructor == String
-				? m
-				: m[method]);
-		},
-
-		// return the first defined argument, allowing empty strings
-		findDefined: function() {
-			for(var i = 0; i < arguments.length; i++) {
-				if (arguments[i] !== undefined)
-					return arguments[i];
-			}
-			return undefined;
-		},
-
-		defaultMessage: function( element, method) {
-			return this.findDefined(
-				this.customMessage( element.name, method ),
-				this.customMetaMessage( element, method ),
-				// title is never undefined, so handle empty string as undefined
-				!this.settings.ignoreTitle && element.title || undefined,
-				$.validator.messages[method],
-				"<strong>Warning: No message defined for " + element.name + "</strong>"
-			);
-		},
-
-		formatAndAdd: function( element, rule ) {
-			var message = this.defaultMessage( element, rule.method ),
-				theregex = /\$?\{(\d+)\}/g;
-			if ( typeof message == "function" ) {
-				message = message.call(this, rule.parameters, element);
-			} else if (theregex.test(message)) {
-				message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
-			}
-			this.errorList.push({
-				message: message,
-				element: element
-			});
-
-			this.errorMap[element.name] = message;
-			this.submitted[element.name] = message;
-		},
-
-		addWrapper: function(toToggle) {
-			if ( this.settings.wrapper )
-				toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
-			return toToggle;
-		},
-
-		defaultShowErrors: function() {
-			for ( var i = 0; this.errorList[i]; i++ ) {
-				var error = this.errorList[i];
-				this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
-				this.showLabel( error.element, error.message );
-			}
-			if( this.errorList.length ) {
-				this.toShow = this.toShow.add( this.containers );
-			}
-			if (this.settings.success) {
-				for ( var i = 0; this.successList[i]; i++ ) {
-					this.showLabel( this.successList[i] );
-				}
-			}
-			if (this.settings.unhighlight) {
-				for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
-					this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
-				}
-			}
-			this.toHide = this.toHide.not( this.toShow );
-			this.hideErrors();
-			this.addWrapper( this.toShow ).show();
-		},
-
-		validElements: function() {
-			return this.currentElements.not(this.invalidElements());
-		},
-
-		invalidElements: function() {
-			return $(this.errorList).map(function() {
-				return this.element;
-			});
-		},
-
-		showLabel: function(element, message) {
-			var label = this.errorsFor( element );
-			if ( label.length ) {
-				// refresh error/success class
-				label.removeClass().addClass( this.settings.errorClass );
-
-				// check if we have a generated label, replace the message then
-				label.attr("generated") && label.html(message);
-			} else {
-				// create label
-				label = $("<" + this.settings.errorElement + "/>")
-					.attr({"for":  this.idOrName(element), generated: true})
-					.addClass(this.settings.errorClass)
-					.html(message || "");
-				if ( this.settings.wrapper ) {
-					// make sure the element is visible, even in IE
-					// actually showing the wrapped element is handled elsewhere
-					label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
-				}
-				if ( !this.labelContainer.append(label).length )
-					this.settings.errorPlacement
-						? this.settings.errorPlacement(label, $(element) )
-						: label.insertAfter(element);
-			}
-			if ( !message && this.settings.success ) {
-				label.text("");
-				typeof this.settings.success == "string"
-					? label.addClass( this.settings.success )
-					: this.settings.success( label );
-			}
-			this.toShow = this.toShow.add(label);
-		},
-
-		errorsFor: function(element) {
-			var name = this.idOrName(element);
-    		return this.errors().filter(function() {
-				return $(this).attr('for') == name;
-			});
-		},
-
-		idOrName: function(element) {
-			return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
-		},
-
-		checkable: function( element ) {
-			return /radio|checkbox/i.test(element.type);
-		},
-
-		findByName: function( name ) {
-			// select by name and filter by form for performance over form.find("[name=...]")
-			var form = this.currentForm;
-			return $(document.getElementsByName(name)).map(function(index, element) {
-				return element.form == form && element.name == name && element  || null;
-			});
-		},
-
-		getLength: function(value, element) {
-			switch( element.nodeName.toLowerCase() ) {
-			case 'select':
-				return $("option:selected", element).length;
-			case 'input':
-				if( this.checkable( element) )
-					return this.findByName(element.name).filter(':checked').length;
-			}
-			return value.length;
-		},
-
-		depend: function(param, element) {
-			return this.dependTypes[typeof param]
-				? this.dependTypes[typeof param](param, element)
-				: true;
-		},
-
-		dependTypes: {
-			"boolean": function(param, element) {
-				return param;
-			},
-			"string": function(param, element) {
-				return !!$(param, element.form).length;
-			},
-			"function": function(param, element) {
-				return param(element);
-			}
-		},
-
-		optional: function(element) {
-			return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
-		},
-
-		startRequest: function(element) {
-			if (!this.pending[element.name]) {
-				this.pendingRequest++;
-				this.pending[element.name] = true;
-			}
-		},
-
-		stopRequest: function(element, valid) {
-			this.pendingRequest--;
-			// sometimes synchronization fails, make sure pendingRequest is never < 0
-			if (this.pendingRequest < 0)
-				this.pendingRequest = 0;
-			delete this.pending[element.name];
-			if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
-				$(this.currentForm).submit();
-				this.formSubmitted = false;
-			} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
-				$(this.currentForm).triggerHandler("invalid-form", [this]);
-				this.formSubmitted = false;
-			}
-		},
-
-		previousValue: function(element) {
-			return $.data(element, "previousValue") || $.data(element, "previousValue", {
-				old: null,
-				valid: true,
-				message: this.defaultMessage( element, "remote" )
-			});
-		}
-
-	},
-
-	classRuleSettings: {
-		required: {required: true},
-		email: {email: true},
-		url: {url: true},
-		date: {date: true},
-		dateISO: {dateISO: true},
-		dateDE: {dateDE: true},
-		number: {number: true},
-		numberDE: {numberDE: true},
-		digits: {digits: true},
-		creditcard: {creditcard: true}
-	},
-
-	addClassRules: function(className, rules) {
-		className.constructor == String ?
-			this.classRuleSettings[className] = rules :
-			$.extend(this.classRuleSettings, className);
-	},
-
-	classRules: function(element) {
-		var rules = {};
-		var classes = $(element).attr('class');
-		classes && $.each(classes.split(' '), function() {
-			if (this in $.validator.classRuleSettings) {
-				$.extend(rules, $.validator.classRuleSettings[this]);
-			}
-		});
-		return rules;
-	},
-
-	attributeRules: function(element) {
-		var rules = {};
-		var $element = $(element);
-
-		for (var method in $.validator.methods) {
-			var value = $element.attr(method);
-			if (value) {
-				rules[method] = value;
-			}
-		}
-
-		// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
-		if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
-			delete rules.maxlength;
-		}
-
-		return rules;
-	},
-
-	metadataRules: function(element) {
-		if (!$.metadata) return {};
-
-		var meta = $.data(element.form, 'validator').settings.meta;
-		return meta ?
-			$(element).metadata()[meta] :
-			$(element).metadata();
-	},
-
-	staticRules: function(element) {
-		var rules = {};
-		var validator = $.data(element.form, 'validator');
-		if (typeof validator !== 'undefined' && validator.settings.rules) {
-			rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
-		}
-		return rules;
-	},
-
-	normalizeRules: function(rules, element) {
-		// handle dependency check
-		$.each(rules, function(prop, val) {
-			// ignore rule when param is explicitly false, eg. required:false
-			if (val === false) {
-				delete rules[prop];
-				return;
-			}
-			if (val.param || val.depends) {
-				var keepRule = true;
-				switch (typeof val.depends) {
-					case "string":
-						keepRule = !!$(val.depends, element.form).length;
-						break;
-					case "function":
-						keepRule = val.depends.call(element, element);
-						break;
-				}
-				if (keepRule) {
-					rules[prop] = val.param !== undefined ? val.param : true;
-				} else {
-					delete rules[prop];
-				}
-			}
-		});
-
-		// evaluate parameters
-		$.each(rules, function(rule, parameter) {
-			rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
-		});
-
-		// clean number parameters
-		$.each(['minlength', 'maxlength', 'min', 'max'], function() {
-			if (rules[this]) {
-				rules[this] = Number(rules[this]);
-			}
-		});
-		$.each(['rangelength', 'range'], function() {
-			if (rules[this]) {
-				rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
-			}
-		});
-
-		if ($.validator.autoCreateRanges) {
-			// auto-create ranges
-			if (rules.min && rules.max) {
-				rules.range = [rules.min, rules.max];
-				delete rules.min;
-				delete rules.max;
-			}
-			if (rules.minlength && rules.maxlength) {
-				rules.rangelength = [rules.minlength, rules.maxlength];
-				delete rules.minlength;
-				delete rules.maxlength;
-			}
-		}
-
-		// To support custom messages in metadata ignore rule methods titled "messages"
-		if (rules.messages) {
-			delete rules.messages;
-		}
-
-		return rules;
-	},
-
-	// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
-	normalizeRule: function(data) {
-		if( typeof data == "string" ) {
-			var transformed = {};
-			$.each(data.split(/\s/), function() {
-				transformed[this] = true;
-			});
-			data = transformed;
-		}
-		return data;
-	},
-
-	// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
-	addMethod: function(name, method, message) {
-		$.validator.methods[name] = method;
-		$.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
-		if (method.length < 3) {
-			$.validator.addClassRules(name, $.validator.normalizeRule(name));
-		}
-	},
-
-	methods: {
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/required
-		required: function(value, element, param) {
-			// check if dependency is met
-			if ( !this.depend(param, element) )
-				return "dependency-mismatch";
-			switch( element.nodeName.toLowerCase() ) {
-			case 'select':
-				// could be an array for select-multiple or a string, both are fine this way
-				var val = $(element).val();
-				return val && val.length > 0;
-			case 'input':
-				if ( this.checkable(element) )
-					return this.getLength(value, element) > 0;
-			default:
-				return $.trim(value).length > 0;
-			}
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/remote
-		remote: function(value, element, param) {
-			if ( this.optional(element) )
-				return "dependency-mismatch";
-
-			var previous = this.previousValue(element);
-			if (!this.settings.messages[element.name] )
-				this.settings.messages[element.name] = {};
-			previous.originalMessage = this.settings.messages[element.name].remote;
-			this.settings.messages[element.name].remote = previous.message;
-
-			param = typeof param == "string" && {url:param} || param;
-
-			if ( this.pending[element.name] ) {
-				return "pending";
-			}
-			if ( previous.old === value ) {
-				return previous.valid;
-			}
-
-			previous.old = value;
-			var validator = this;
-			this.startRequest(element);
-			var data = {};
-			data[element.name] = value;
-			$.ajax($.extend(true, {
-				url: param,
-				mode: "abort",
-				port: "validate" + element.name,
-				dataType: "json",
-				data: data,
-				success: function(response) {
-					validator.settings.messages[element.name].remote = previous.originalMessage;
-					var valid = response === true;
-					if ( valid ) {
-						var submitted = validator.formSubmitted;
-						validator.prepareElement(element);
-						validator.formSubmitted = submitted;
-						validator.successList.push(element);
-						validator.showErrors();
-					} else {
-						var errors = {};
-						var message = response || validator.defaultMessage( element, "remote" );
-						errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
-						validator.showErrors(errors);
-					}
-					previous.valid = valid;
-					validator.stopRequest(element, valid);
-				}
-			}, param));
-			return "pending";
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/minlength
-		minlength: function(value, element, param) {
-			return this.optional(element) || this.getLength($.trim(value), element) >= param;
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
-		maxlength: function(value, element, param) {
-			return this.optional(element) || this.getLength($.trim(value), element) <= param;
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
-		rangelength: function(value, element, param) {
-			var length = this.getLength($.trim(value), element);
-			return this.optional(element) || ( length >= param[0] && length <= param[1] );
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/min
-		min: function( value, element, param ) {
-			return this.optional(element) || value >= param;
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/max
-		max: function( value, element, param ) {
-			return this.optional(element) || value <= param;
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/range
-		range: function( value, element, param ) {
-			return this.optional(element) || ( value >= param[0] && value <= param[1] );
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/email
-		email: function(value, element) {
-			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
-			return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/url
-		url: function(value, element) {
-			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
-			return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/date
-		date: function(value, element) {
-			return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
-		dateISO: function(value, element) {
-			return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/number
-		number: function(value, element) {
-			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/digits
-		digits: function(value, element) {
-			return this.optional(element) || /^\d+$/.test(value);
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
-		// based on http://en.wikipedia.org/wiki/Luhn
-		creditcard: function(value, element) {
-			if ( this.optional(element) )
-				return "dependency-mismatch";
-			// accept only digits and dashes
-			if (/[^0-9-]+/.test(value))
-				return false;
-			var nCheck = 0,
-				nDigit = 0,
-				bEven = false;
-
-			value = value.replace(/\D/g, "");
-
-			for (var n = value.length - 1; n >= 0; n--) {
-				var cDigit = value.charAt(n);
-				var nDigit = parseInt(cDigit, 10);
-				if (bEven) {
-					if ((nDigit *= 2) > 9)
-						nDigit -= 9;
-				}
-				nCheck += nDigit;
-				bEven = !bEven;
-			}
-
-			return (nCheck % 10) == 0;
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/accept
-		accept: function(value, element, param) {
-			param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
-			return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
-		},
-
-		// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
-		equalTo: function(value, element, param) {
-			// bind to the blur event of the target in order to revalidate whenever the target field is updated
-			// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
-			var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
-				$(element).valid();
-			});
-			return value == target.val();
-		}
-
-	}
-
-});
-
-// deprecated, use $.validator.format instead
-$.format = $.validator.format;
-
-})(jQuery);
-
-// ajax mode: abort
-// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
-// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
-;(function($) {
-	var pendingRequests = {};
-	// Use a prefilter if available (1.5+)
-	if ( $.ajaxPrefilter ) {
-		$.ajaxPrefilter(function(settings, _, xhr) {
-			var port = settings.port;
-			if (settings.mode == "abort") {
-				if ( pendingRequests[port] ) {
-					pendingRequests[port].abort();
-				}
-				pendingRequests[port] = xhr;
-			}
-		});
-	} else {
-		// Proxy ajax
-		var ajax = $.ajax;
-		$.ajax = function(settings) {
-			var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
-				port = ( "port" in settings ? settings : $.ajaxSettings ).port;
-			if (mode == "abort") {
-				if ( pendingRequests[port] ) {
-					pendingRequests[port].abort();
-				}
-				return (pendingRequests[port] = ajax.apply(this, arguments));
-			}
-			return ajax.apply(this, arguments);
-		};
-	}
-})(jQuery);
-
-// provides cross-browser focusin and focusout events
-// IE has native support, in other browsers, use event caputuring (neither bubbles)
-
-// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
-// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
-;(function($) {
-	// only implement if not provided by jQuery core (since 1.4)
-	// TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
-	if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
-		$.each({
-			focus: 'focusin',
-			blur: 'focusout'
-		}, function( original, fix ){
-			$.event.special[fix] = {
-				setup:function() {
-					this.addEventListener( original, handler, true );
-				},
-				teardown:function() {
-					this.removeEventListener( original, handler, true );
-				},
-				handler: function(e) {
-					arguments[0] = $.event.fix(e);
-					arguments[0].type = fix;
-					return $.event.handle.apply(this, arguments);
-				}
-			};
-			function handler(e) {
-				e = $.event.fix(e);
-				e.type = fix;
-				return $.event.handle.call(this, e);
-			}
-		});
-	};
-	$.extend($.fn, {
-		validateDelegate: function(delegate, type, handler) {
-			return this.bind(type, function(event) {
-				var target = $(event.target);
-				if (target.is(delegate)) {
-					return handler.apply(target, arguments);
-				}
-			});
-		}
-	});
-})(jQuery);
diff --git a/template/js/plugin/jquery.zoomie.js b/template/js/plugin/jquery.zoomie.js
deleted file mode 100755
index 164b28d..0000000
--- a/template/js/plugin/jquery.zoomie.js
+++ /dev/null
@@ -1,91 +0,0 @@
-//  jQuery Zoomie 1.2
-//  (c) 2012 Eugen Rochko
-//  jQuery Zoomie may be freely distributed under the MIT license.
-
-(function ($, window, document) {
-  'use strict';
-
-  var defaults = {
-    radius: 100
-  };
-
-  var Zoomie = function (element, options) {
-    this.element = element;
-    this.options = $.extend(defaults, options);
-    this.init();
-  };
-
-  Zoomie.prototype.init = function () {
-    var self = this,
-      fullSrc = this.element.data('full-src'),
-      resizeTimer = undefined;
-    if(!fullSrc) {
-      fullSrc = this.element[0].src;
-    }
-
-    this.containerElement = $('<div>').addClass('zoomie').insertAfter(this.element);
-    this.element.detach().appendTo(this.containerElement);
-
-    this.windowElement = $('<div>').addClass('zoomie-window').css({
-      'background-image': 'url(' + fullSrc + ')',
-      'width': self.options.radius * 2,
-      'height': self.options.radius * 2
-    }).appendTo(this.containerElement);
-    
-    this.fullImage        = new Image();
-    this.fullImage.src    = fullSrc;
-
-    $(this.fullImage).on('load', function () {
-      self.ratioX = self.containerElement.innerWidth() / self.fullImage.width;
-      self.ratioY = self.containerElement.innerHeight() / self.fullImage.height;
-
-      self.containerElement.on('mouseenter', function () {
-        self.windowElement.show();
-      });
-
-      self.containerElement.on('mousemove', function (e) {
-        var offset = self.containerElement.offset(),
-          x        = e.pageX - offset.left,
-          y        = e.pageY - offset.top,
-          windowX  = x - self.options.radius,
-          windowY  = y - self.options.radius,
-          imageX   = (((x - self.containerElement.innerWidth()) / self.ratioX) * -1) - self.fullImage.width + self.options.radius,
-          imageY   = (((y - self.containerElement.innerHeight()) / self.ratioY) * -1) - self.fullImage.height + self.options.radius;
-
-        self.windowElement.css({
-          'top':  windowY,
-          'left': windowX,
-          'background-position': imageX + 'px ' + imageY + 'px'
-        });
-
-        if (e.pageX < offset.left || e.pageY < offset.top || x > self.containerElement.innerWidth() || y > self.containerElement.innerHeight()) {
-          // Hide the tool if the mouse is outside of the viewport image coordinates. Can't use the
-          // onmouseleave event because the mouse would always stay in the tool and therefore in
-          // the viewport and the event would never trigger
-          self.windowElement.hide();
-        }
-      });
-
-      $(window).on('resize', function () {
-        // If the window is resized it is possible that the viewport image changed size
-        // so we better calculate the ratios anew
-        if (typeof resizeTimer === "undefined") {
-          // We bubble the resize callback because we don't need it firing every millisecond
-          resizeTimer = setTimeout(function () {
-            resizeTimer = undefined;
-            self.ratioX = self.containerElement.innerWidth() / self.fullImage.width;
-            self.ratioY = self.containerElement.innerHeight() / self.fullImage.height;
-          }, 200);
-        }
-      });
-    });
-  };
-
-  $.fn.zoomie = function (options) {
-    return this.each(function () {
-      if (!$.data(this, 'plugin_zoomie')) {
-        $.data(this, 'plugin_zoomie', new Zoomie($(this), options));
-      }
-    });
-  };
-}(jQuery, window, document));
diff --git a/template/js/plugin/modernizr.foundation.js b/template/js/plugin/modernizr.foundation.js
deleted file mode 100755
index e5afa6c..0000000
--- a/template/js/plugin/modernizr.foundation.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/* Modernizr 2.6.2 (Custom Build) | MIT & BSD
- * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load
- */
-;window.Modernizr=function(a,b,c){function y(a){j.cssText=a}function z(a,b){return y(m.join(a+";")+(b||""))}function A(a,b){return typeof a===b}function B(a,b){return!!~(""+a).indexOf(b)}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:A(f,"function")?f.bind(d||b):f}return!1}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10))while(d--)j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);return f=["&#173;",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c)return c(b).matches;var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute"}),d},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b)}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(s.call(arguments)))};return e}),o.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},o.svg=function(){return!!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==n.svg},o.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")))};for(var D in o)x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));return e.addTest=function(a,b){if(typeof a=="object")for(var d in a)x(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++)d.createElement(f[e]);return d}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(r,b.frag)}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++)g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));for(f=0;f<b;f++)c=x[f](c);return c}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2})))}function h(a,b){function c(a,c){if(a){if(e(a))c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}),g(a,j,b,0,h);else if(Object(a)===a)for(n in m=function(){var b=0,c;for(c in a)a.hasOwnProperty(c)&&b++;return b}(),a)a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l()}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l()}}(k[n])),g(a[n],j,b,n,h))}else!c&&l()}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i)}var i,j,l=this.yepnope.loader;if(e(a))g(a,0,l,0);else if(w(a))for(i=0;i<a.length;i++)j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);else Object(a)===a&&h(a,l)},B.addPrefix=function(a,b){z[a]=b},B.addFilter=function(a){x.push(a)},B.errorTimeout=1e4,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete"},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d)k.setAttribute(o,d[o]);c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null)},m(function(){l||(l=1,c(1))},e),i?k.onload():n.parentNode.insertBefore(k,n)},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d)e.setAttribute(j,d[j]);g||(n.parentNode.insertBefore(e,n),m(c,0))}}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0))},Modernizr.addTest("ie8compat",function(){return!window.addEventListener&&document.documentMode&&document.documentMode===7});
diff --git a/template/js/plugin/nav-carousel.js b/template/js/plugin/nav-carousel.js
deleted file mode 100755
index e69de29..0000000
diff --git a/template/js/plugins.js b/template/js/plugins.js
new file mode 100644
index 0000000..b2da41e
--- /dev/null
+++ b/template/js/plugins.js
@@ -0,0 +1,5701 @@
+/* ===============================
+   ====== FOUNDATION.MIN.JS ======
+   =============================== */
+(function(b,a,d){var e=b(document),c=a.Modernizr;b(document).ready(function(){b.fn.foundationAlerts?e.foundationAlerts():null;b.fn.foundationButtons?e.foundationButtons():null;b.fn.foundationAccordion?e.foundationAccordion():null;b.fn.foundationNavigation?e.foundationNavigation():null;b.fn.foundationTopBar?e.foundationTopBar():null;b.fn.foundationCustomForms?e.foundationCustomForms():null;b.fn.foundationMediaQueryViewer?e.foundationMediaQueryViewer():null;b.fn.foundationTabs?e.foundationTabs({callback:b.foundation.customForms.appendCustomMarkup}):null;b.fn.foundationTooltips?e.foundationTooltips():null;b.fn.foundationMagellan?e.foundationMagellan():null;b.fn.foundationClearing?e.foundationClearing():null;b.fn.placeholder?b("input, textarea").placeholder():null});if(c.touch&&!a.location.hash){b(a).load(function(){setTimeout(function(){a.scrollTo(0,1)},0)})}})(jQuery,this);(function(b,a,c){b.fn.foundationAlerts=function(d){var e=b.extend({callback:b.noop},d);b(document).on("click",".alert-box a.close",function(f){f.preventDefault();b(this).closest(".alert-box").fadeOut(function(){b(this).remove();e.callback()})})}})(jQuery,this);(function(b,a,c){b.fn.foundationButtons=function(l){var g=b(document),e=b.extend({dropdownAsToggle:false,activeClass:"active"},l),f=function(m){b(".button.dropdown").find("ul").not(m).removeClass("show-dropdown")},i=function(m){var n=b(".button.dropdown").not(m);n.add(b("> span."+e.activeClass,n)).removeClass(e.activeClass)};g.on("click.fndtn",".button.disabled",function(m){m.preventDefault()});b(".button.dropdown > ul",this).addClass("no-hover");g.on("click.fndtn",".button.dropdown:not(.split), .button.dropdown.split span",function(o){var n=b(this),m=n.closest(".button.dropdown"),p=b("> ul",m);if(o.target.nodeName!=="A"){o.preventDefault()}setTimeout(function(){f(e.dropdownAsToggle?p:"");p.toggleClass("show-dropdown");if(e.dropdownAsToggle){i(m);n.toggleClass(e.activeClass)}},0)});g.on("click.fndtn","body, html",function(m){if(c==m.originalEvent){return}if(!b(m.originalEvent.target).is(".button.dropdown:not(.split), .button.dropdown.split span")){f();if(e.dropdownAsToggle){i()}}});var h=b(".button.dropdown:not(.large):not(.small):not(.tiny):visible",this).outerHeight()-1,k=b(".button.large.dropdown:visible",this).outerHeight()-1,d=b(".button.small.dropdown:visible",this).outerHeight()-1,j=b(".button.tiny.dropdown:visible",this).outerHeight()-1;b(".button.dropdown:not(.large):not(.small):not(.tiny) > ul",this).css("top",h);b(".button.dropdown.large > ul",this).css("top",k);b(".button.dropdown.small > ul",this).css("top",d);b(".button.dropdown.tiny > ul",this).css("top",j);b(".button.dropdown.up:not(.large):not(.small):not(.tiny) > ul",this).css("top","auto").css("bottom",h-2);b(".button.dropdown.up.large > ul",this).css("top","auto").css("bottom",k-2);b(".button.dropdown.up.small > ul",this).css("top","auto").css("bottom",d-2);b(".button.dropdown.up.tiny > ul",this).css("top","auto").css("bottom",j-2)}})(jQuery,this);(function(d,c,a,f){var e={templates:{viewing:'<a href="#" class="clearing-close">&times;</a><div class="visible-img" style="display: none"><img src="#"><p class="clearing-caption"></p><a href="#" class="clearing-main-left"></a><a href="#" class="clearing-main-right"></a></div>'},close_selectors:"a.clearing-close",initialized:false,locked:false},b={init:function(g,h){return this.find("ul[data-clearing]").each(function(){var l=d(a),j=d(this),i=i||{},m=m||{},k=j.data("fndtn.clearing.settings");if(!k){i.$parent=j.parent();j.data("fndtn.clearing.settings",d.extend({},e,i));b.assemble(j.find("li"));if(!e.initialized){b.events(j);if(Modernizr.touch){b.swipe_events()}}}})},events:function(h){var g=h.data("fndtn.clearing.settings");d(a).on("click.fndtn.clearing","ul[data-clearing] li",function(l,k,j){var k=k||d(this),j=j||k,i=k.parent().data("fndtn.clearing.settings");l.preventDefault();if(!i){k.parent().foundationClearing()}b.open(d(l.target),k,j);b.update_paddles(j)}).on("click.fndtn.clearing",".clearing-main-right",function(i){b.nav(i,"next")}).on("click.fndtn.clearing",".clearing-main-left",function(i){b.nav(i,"prev")}).on("click.fndtn.clearing",g.close_selectors,this.close).on("keydown.fndtn.clearing",this.keydown);d(c).on("resize.fndtn.clearing",this.resize);e.initialized=true},swipe_events:function(){d(a).bind("swipeleft","ul[data-clearing]",function(g){b.nav(g,"next")}).bind("swiperight","ul[data-clearing]",function(g){b.nav(g,"prev")}).bind("movestart","ul[data-clearing]",function(g){if((g.distX>g.distY&&g.distX<-g.distY)||(g.distX<g.distY&&g.distX>-g.distY)){g.preventDefault()}})},assemble:function(l){var h=l.parent(),i=h.data("fndtn.clearing.settings"),g=h.detach(),j={grid:'<div class="carousel">'+this.outerHTML(g[0])+"</div>",viewing:i.templates.viewing},k='<div class="clearing-assembled"><div>'+j.viewing+j.grid+"</div></div>";return i.$parent.append(k)},open:function(j,m,l){var h=l.closest(".clearing-assembled"),g=h.find("div:first"),i=g.find(".visible-img"),k=i.find("img").not(j);if(!b.locked()){k.attr("src",this.load(j));k.loaded(function(){h.addClass("clearing-blackout");g.addClass("clearing-container");this.caption(i.find(".clearing-caption"),j);i.show();this.fix_height(l);this.center(k);this.shift(m,l,function(){l.siblings().removeClass("visible");l.addClass("visible")})}.bind(this))}},close:function(j){j.preventDefault();var h=(function(k){if(/blackout/.test(k.selector)){return k}else{return k.closest(".clearing-blackout")}}(d(this))),g,i;if(this===j.target&&h){g=h.find("div:first"),i=g.find(".visible-img");e.prev_index=0;h.find("ul[data-clearing]").attr("style","");h.removeClass("clearing-blackout");g.removeClass("clearing-container");i.hide()}return false},keydown:function(h){var g=d(".clearing-blackout").find("ul[data-clearing]");if(h.which===39){b.go(g,"next")}if(h.which===37){b.go(g,"prev")}if(h.which===27){d("a.clearing-close").trigger("click")}},nav:function(i,h){var g=d(".clearing-blackout").find("ul[data-clearing]");i.preventDefault();this.go(g,h)},resize:function(){var g=d(".clearing-blackout .visible-img").find("img");if(g.length>0){b.center(g)}},fix_height:function(h){var g=h.siblings();g.each(function(){var i=d(this),j=i.find("img");if(i.height()>j.outerHeight()){i.addClass("fix-height")}}).closest("ul").width(g.length*100+"%")},update_paddles:function(h){var g=h.closest(".carousel").siblings(".visible-img");if(h.next().length>0){g.find(".clearing-main-right").removeClass("disabled")}else{g.find(".clearing-main-right").addClass("disabled")}if(h.prev().length>0){g.find(".clearing-main-left").removeClass("disabled")}else{g.find(".clearing-main-left").addClass("disabled")}},load:function(h){var g=h.parent().attr("href");this.preload(h);if(g){return g}return h.attr("src")},preload:function(g){this.img(g.closest("li").next());this.img(g.closest("li").prev())},img:function(g){if(g.length>0){var h=new Image(),i=g.find("a");if(i.length>0){h.src=i.attr("href")}else{h.src=g.find("img").attr("src")}}},caption:function(g,i){var h=i.data("caption");if(h){g.text(h).show()}else{g.text("").hide()}},go:function(g,j){var i=g.find(".visible"),h=i[j]();if(h.length>0){h.find("img").trigger("click",[i,h])}},shift:function(j,k,o){var l=k.parent(),i=e.prev_index,m=this.direction(l,j,k),h=parseInt(l.css("left"),10),g=k.outerWidth(),n;if(k.index()!==i&&!/skip/.test(m)){if(/left/.test(m)){this.lock();l.animate({left:h+g},300,this.unlock)}else{if(/right/.test(m)){this.lock();l.animate({left:h-g},300,this.unlock)}}}else{if(/skip/.test(m)){n=k.index()-e.up_count;this.lock();if(n>0){l.animate({left:-(n*g)},300,this.unlock)}else{l.animate({left:0},300,this.unlock)}}}o()},lock:function(){e.locked=true},unlock:function(){e.locked=false},locked:function(){return e.locked},direction:function(j,l,k){var i=j.find("li"),h=i.outerWidth()+(i.outerWidth()/4),m=Math.floor(d(".clearing-container").outerWidth()/h)-1,n=i.index(k),g;e.up_count=m;if(this.adjacent(e.prev_index,n)){if((n>m)&&n>e.prev_index){g="right"}else{if((n>m-1)&&n<=e.prev_index){g="left"}else{g=false}}}else{g="skip"}e.prev_index=n;return g},adjacent:function(j,h){for(var g=h+1;g>=h-1;g--){if(g===j){return true}}return false},center:function(g){g.css({marginLeft:-(g.width()/2),marginTop:-(g.height()/2)})},outerHTML:function(g){return g.outerHTML||new XMLSerializer().serializeToString(g)}};d.fn.foundationClearing=function(g){if(b[g]){return b[g].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof g==="object"||!g){return b.init.apply(this,arguments)}else{d.error("Method "+g+" does not exist on jQuery.foundationClearing")}}};(function(g){g.fn.loaded=function(n,l){var j=g.extend({},g.fn.loaded.defaults,l),i=this.find("img").add(this.filter("img")),k=i.length;function h(){k-=1;!k&&n()}function m(){this.one("load",h);if(g.browser.msie){var p=this.attr("src"),o=p.match(/\?/)?"&":"?";o+=j.cachePrefix+"="+(new Date()).getTime();this.attr("src",p+o)}}return i.each(function(){var o=g(this);if(!o.attr("src")){h();return}this.complete||this.readyState===4?h():m.call(o)})};g.fn.loaded.defaults={cachePrefix:"random"}}(jQuery))}(jQuery,this,this.document));(function(d){var c=function(){return{tmp:[],hidden:null,adjust:function(g){var f=this;f.hidden=g.parents().andSelf().filter(":hidden");f.hidden.each(function(){var h=d(this);f.tmp.push(h.attr("style"));h.css({visibility:"hidden",display:"block"})})},reset:function(){var f=this;f.hidden.each(function(h){var g=d(this),j=f.tmp[h];if(j===undefined){g.removeAttr("style")}else{g.attr("style",j)}});f.tmp=[];f.hidden=null}}};jQuery.foundation=jQuery.foundation||{};jQuery.foundation.customForms=jQuery.foundation.customForms||{};d.foundation.customForms.appendCustomMarkup=function(h){var i={disable_class:"js-disable-custom"};h=d.extend(i,h);function g(j,m){var n=d(m).hide(),l=n.attr("type"),k=n.next("span.custom."+l);if(k.length===0){k=d('<span class="custom '+l+'"></span>').insertAfter(n)}k.toggleClass("checked",n.is(":checked"));k.toggleClass("disabled",n.is(":disabled"))}function f(u,l){var x=c();var q=d(l),p=q.next("div.custom.dropdown"),r=p.find("ul"),s=p.find(".current"),w=p.find(".selector"),o=q.find("option"),m=o.filter(":selected"),v=0,t="",k;var j=false;if(q.hasClass("no-custom")){return}if(p.length===0){var n=q.hasClass("small")?"small":q.hasClass("medium")?"medium":q.hasClass("large")?"large":q.hasClass("expand")?"expand":"";p=d('<div class="'+["custom","dropdown",n].join(" ")+'"><a href="#" class="selector"></a><ul /></div>"');w=p.find(".selector");r=p.find("ul");t=o.map(function(){return"<li>"+d(this).html()+"</li>"}).get().join("");r.append(t);j=p.prepend('<a href="#" class="current">'+m.html()+"</a>").find(".current");q.after(p).hide()}else{t=o.map(function(){return"<li>"+d(this).html()+"</li>"}).get().join("");r.html("").append(t)}p.toggleClass("disabled",q.is(":disabled"));k=r.find("li");o.each(function(y){if(this.selected){k.eq(y).addClass("selected");if(j){j.html(d(this).html())}}});r.css("width","inherit");p.css("width","inherit");if(!p.is(".small, .medium, .large, .expand")){p.addClass("open");x.adjust(r);v=(k.outerWidth()>v)?k.outerWidth():v;x.reset();p.removeClass("open");p.width(v+18);r.width(v+16)}}d("form.custom input:radio[data-customforms!=disabled]").each(g);d("form.custom input:checkbox[data-customforms!=disabled]").each(g);d("form.custom select[data-customforms!=disabled]").each(f)};var b=function(f){var g=0,h=f.next();$options=f.find("option");h.find("ul").html("");$options.each(function(){$li=d("<li>"+d(this).html()+"</li>");h.find("ul").append($li)});$options.each(function(i){if(this.selected){h.find("li").eq(i).addClass("selected");h.find(".current").html(d(this).html())}});h.removeAttr("style").find("ul").removeAttr("style");h.find("li").each(function(){h.addClass("open");if(d(this).outerWidth()>g){g=d(this).outerWidth()}h.removeClass("open")});h.css("width",g+18+"px");h.find("ul").css("width",g+16+"px")};var a=function(f){var h=f.prev(),g=h[0];if(false===h.is(":disabled")){g.checked=((g.checked)?false:true);f.toggleClass("checked");h.trigger("change")}};var e=function(f){var i=f.prev(),h=i.closest("form.custom"),g=i[0];if(false===i.is(":disabled")){h.find('input:radio[name="'+i.attr("name")+'"]').next().not(f).removeClass("checked");if(!f.hasClass("checked")){f.toggleClass("checked")}g.checked=f.hasClass("checked");i.trigger("change")}};d(document).on("click","form.custom span.custom.checkbox",function(f){f.preventDefault();f.stopPropagation();a(d(this))});d(document).on("click","form.custom span.custom.radio",function(f){f.preventDefault();f.stopPropagation();e(d(this))});d(document).on("change","form.custom select[data-customforms!=disabled]",function(f){b(d(this))});d(document).on("click","form.custom label",function(g){var f=d("#"+d(this).attr("for")+"[data-customforms!=disabled]"),i,h;if(f.length!==0){if(f.attr("type")==="checkbox"){g.preventDefault();i=d(this).find("span.custom.checkbox");a(i)}else{if(f.attr("type")==="radio"){g.preventDefault();h=d(this).find("span.custom.radio");e(h)}}}});d(document).on("click","form.custom div.custom.dropdown a.current, form.custom div.custom.dropdown a.selector",function(g){var i=d(this),h=i.closest("div.custom.dropdown"),f=h.prev();g.preventDefault();d("div.dropdown").removeClass("open");if(false===f.is(":disabled")){h.toggleClass("open");if(h.hasClass("open")){d(document).bind("click.customdropdown",function(j){h.removeClass("open");d(document).unbind(".customdropdown")})}else{d(document).unbind(".customdropdown")}return false}});d(document).on("click","form.custom div.custom.dropdown li",function(i){var j=d(this),g=j.closest("div.custom.dropdown"),h=g.prev(),f=0;i.preventDefault();i.stopPropagation();d("div.dropdown").removeClass("open");j.closest("ul").find("li").removeClass("selected");j.addClass("selected");g.removeClass("open").find("a.current").html(j.html());j.closest("ul").find("li").each(function(k){if(j[0]==this){f=k}});h[0].selectedIndex=f;h.trigger("change")});d.fn.foundationCustomForms=d.foundation.customForms.appendCustomMarkup})(jQuery);(function(b,a,c){b.fn.foundationMediaQueryViewer=function(d){var e=b.extend(d,{toggleKey:77}),f=b(document);f.on("keyup.mediaQueryViewer",":input",function(g){if(g.which===e.toggleKey){g.stopPropagation()}});f.on("keyup.mediaQueryViewer",function(g){var h=b("#fqv");if(g.which===e.toggleKey){if(h.length>0){h.remove()}else{b("body").prepend('<div id="fqv" style="position:fixed;top:4px;left:4px;z-index:999;color:#fff;"><p style="font-size:12px;background:rgba(0,0,0,0.75);padding:5px;margin-bottom:1px;line-height:1.2;"><span class="left">Media:</span> <span style="font-weight:bold;" class="show-for-xlarge">Extra Large</span><span style="font-weight:bold;" class="show-for-large">Large</span><span style="font-weight:bold;" class="show-for-medium">Medium</span><span style="font-weight:bold;" class="show-for-small">Small</span><span style="font-weight:bold;" class="show-for-landscape">Landscape</span><span style="font-weight:bold;" class="show-for-portrait">Portrait</span><span style="font-weight:bold;" class="show-for-touch">Touch</span></p></div>')}}})}})(jQuery,this);(function(b,a,c){b.fn.foundationNavigation=function(e){var d=false;if(Modernizr.touch||navigator.userAgent.match(/Windows Phone/i)){b(document).on("click.fndtn touchstart.fndtn",".nav-bar a.flyout-toggle",function(g){g.preventDefault();var f=b(this).siblings(".flyout").first();if(d===false){b(".nav-bar .flyout").not(f).slideUp(500);f.slideToggle(500,function(){d=false})}d=true});b(".nav-bar>li.has-flyout",this).addClass("is-touch")}else{b(".nav-bar>li.has-flyout",this).on("mouseenter mouseleave",function(h){if(h.type=="mouseenter"){b(".nav-bar").find(".flyout").hide();b(this).children(".flyout").show()}if(h.type=="mouseleave"){var g=b(this).children(".flyout"),f=g.find("input"),i=function(k){var j;if(k.length>0){k.each(function(){if(b(this).is(":focus")){j=true}});return j}return false};if(!i(f)){b(this).children(".flyout").hide()}}})}}})(jQuery,this);(function(b){b.fn.findFirstImage=function(){return this.first().find("img").andSelf().filter("img").first()};var a={defaults:{animation:"horizontal-push",animationSpeed:600,timer:true,advanceSpeed:4000,pauseOnHover:false,startClockOnMouseOut:false,startClockOnMouseOutAfter:1000,directionalNav:true,directionalNavRightText:"Right",directionalNavLeftText:"Left",captions:true,captionAnimation:"fade",captionAnimationSpeed:600,resetTimerOnClick:false,bullets:false,bulletThumbs:false,bulletThumbLocation:"",afterSlideChange:b.noop,afterLoadComplete:b.noop,fluid:true,centerBullets:true,singleCycle:false,slideNumber:false,stackOnSmall:false},activeSlide:0,numberSlides:0,orbitWidth:null,orbitHeight:null,locked:null,timerRunning:null,degrees:0,wrapperHTML:'<div class="orbit-wrapper" />',timerHTML:'<div class="timer"><span class="mask"><span class="rotator"></span></span><span class="pause"></span></div>',captionHTML:'<div class="orbit-caption"></div>',directionalNavHTML:'<div class="slider-nav hide-for-small"><span class="right"></span><span class="left"></span></div>',bulletHTML:'<ul class="orbit-bullets"></ul>',slideNumberHTML:'<span class="orbit-slide-counter"></span>',init:function(f,e){var c,g=0,d=this;this.clickTimer=b.proxy(this.clickTimer,this);this.addBullet=b.proxy(this.addBullet,this);this.resetAndUnlock=b.proxy(this.resetAndUnlock,this);this.stopClock=b.proxy(this.stopClock,this);this.startTimerAfterMouseLeave=b.proxy(this.startTimerAfterMouseLeave,this);this.clearClockMouseLeaveTimer=b.proxy(this.clearClockMouseLeaveTimer,this);this.rotateTimer=b.proxy(this.rotateTimer,this);this.options=b.extend({},this.defaults,e);if(this.options.timer==="false"){this.options.timer=false}if(this.options.captions==="false"){this.options.captions=false}if(this.options.directionalNav==="false"){this.options.directionalNav=false}this.$element=b(f);this.$wrapper=this.$element.wrap(this.wrapperHTML).parent();this.$slides=this.$element.children("img, a, div, figure");this.$element.on("movestart",function(h){if((h.distX>h.distY&&h.distX<-h.distY)||(h.distX<h.distY&&h.distX>-h.distY)){h.preventDefault()}});this.$element.bind("orbit.next",function(){d.shift("next")});this.$element.bind("orbit.prev",function(){d.shift("prev")});this.$element.bind("swipeleft",function(){b(this).trigger("orbit.next")});this.$element.bind("swiperight",function(){b(this).trigger("orbit.prev")});this.$element.bind("orbit.goto",function(i,h){d.shift(h)});this.$element.bind("orbit.start",function(i,h){d.startClock()});this.$element.bind("orbit.stop",function(i,h){d.stopClock()});c=this.$slides.filter("img");if(c.length===0){this.loaded()}else{c.bind("imageready",function(){g+=1;if(g===c.length){d.loaded()}})}},loaded:function(){this.$element.addClass("orbit").css({width:"1px",height:"1px"});if(this.options.stackOnSmall){this.$element.addClass("orbit-stack-on-small")}this.$slides.addClass("orbit-slide");this.setDimentionsFromLargestSlide();this.updateOptionsIfOnlyOneSlide();this.setupFirstSlide();this.notifySlideChange();if(this.options.timer){this.setupTimer();this.startClock()}if(this.options.captions){this.setupCaptions()}if(this.options.directionalNav){this.setupDirectionalNav()}if(this.options.bullets){this.setupBulletNav();this.setActiveBullet()}this.options.afterLoadComplete.call(this);Holder.run()},currentSlide:function(){return this.$slides.eq(this.activeSlide)},notifySlideChange:function(){if(this.options.slideNumber){var c=(this.activeSlide+1)+" of "+this.$slides.length;this.$element.trigger("orbit.change",{slideIndex:this.activeSlide,slideCount:this.$slides.length});if(this.$counter===undefined){var d=b(this.slideNumberHTML).html(c);this.$counter=d;this.$wrapper.append(this.$counter)}else{this.$counter.html(c)}}},setDimentionsFromLargestSlide:function(){var d=this,c;d.$element.add(d.$wrapper).width(this.$slides.first().outerWidth());d.$element.add(d.$wrapper).height(this.$slides.first().height());d.orbitWidth=this.$slides.first().outerWidth();d.orbitHeight=this.$slides.first().height();c=this.$slides.first().findFirstImage().clone();this.$slides.each(function(){var e=b(this),g=e.outerWidth(),f=e.height();if(g>d.$element.outerWidth()){d.$element.add(d.$wrapper).width(g);d.orbitWidth=d.$element.outerWidth()}if(f>d.$element.height()){d.$element.add(d.$wrapper).height(f);d.orbitHeight=d.$element.height();c=b(this).findFirstImage().clone()}d.numberSlides+=1});if(this.options.fluid){if(typeof this.options.fluid==="string"){c=b("<img>").attr("data-src","holder.js/"+this.options.fluid)}d.$element.prepend(c);c.addClass("fluid-placeholder");d.$element.add(d.$wrapper).css({width:"inherit"});d.$element.add(d.$wrapper).css({height:"inherit"});b(window).bind("resize",function(){d.orbitWidth=d.$element.outerWidth();d.orbitHeight=d.$element.height()})}},lock:function(){this.locked=true},unlock:function(){this.locked=false},updateOptionsIfOnlyOneSlide:function(){if(this.$slides.length===1){this.options.directionalNav=false;this.options.timer=false;this.options.bullets=false}},setupFirstSlide:function(){var c=this;this.$slides.first().css({"z-index":3,opacity:1}).fadeIn(function(){c.$slides.css({display:"block"})})},startClock:function(){var c=this;if(!this.options.timer){return false}if(this.$timer.is(":hidden")){this.clock=setInterval(function(){c.$element.trigger("orbit.next")},this.options.advanceSpeed)}else{this.timerRunning=true;this.$pause.removeClass("active");this.clock=setInterval(this.rotateTimer,this.options.advanceSpeed/180,false)}},rotateTimer:function(d){var c="rotate("+this.degrees+"deg)";this.degrees+=2;this.$rotator.css({"-webkit-transform":c,"-moz-transform":c,"-o-transform":c,"-ms-transform":c});if(d){this.degrees=0;this.$rotator.removeClass("move");this.$mask.removeClass("move")}if(this.degrees>180){this.$rotator.addClass("move");this.$mask.addClass("move")}if(this.degrees>360){this.$rotator.removeClass("move");this.$mask.removeClass("move");this.degrees=0;this.$element.trigger("orbit.next")}},stopClock:function(){if(!this.options.timer){return false}else{this.timerRunning=false;clearInterval(this.clock);this.$pause.addClass("active")}},setupTimer:function(){this.$timer=b(this.timerHTML);this.$wrapper.append(this.$timer);this.$rotator=this.$timer.find(".rotator");this.$mask=this.$timer.find(".mask");this.$pause=this.$timer.find(".pause");this.$timer.click(this.clickTimer);if(this.options.startClockOnMouseOut){this.$wrapper.mouseleave(this.startTimerAfterMouseLeave);this.$wrapper.mouseenter(this.clearClockMouseLeaveTimer)}if(this.options.pauseOnHover){this.$wrapper.mouseenter(this.stopClock)}},startTimerAfterMouseLeave:function(){var c=this;this.outTimer=setTimeout(function(){if(!c.timerRunning){c.startClock()}},this.options.startClockOnMouseOutAfter)},clearClockMouseLeaveTimer:function(){clearTimeout(this.outTimer)},clickTimer:function(){if(!this.timerRunning){this.startClock()}else{this.stopClock()}},setupCaptions:function(){this.$caption=b(this.captionHTML);this.$wrapper.append(this.$caption);this.setCaption()},setCaption:function(){var d=this.currentSlide().attr("data-caption"),c;if(!this.options.captions){return false}if(d){if(b.trim(b(d).text()).length<1){return false}if(d.charAt(0)=="#"){d=d.substring(1,d.length)}c=b(d).html();this.$caption.attr("id",d).html(c);switch(this.options.captionAnimation){case"none":this.$caption.show();break;case"fade":this.$caption.fadeIn(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideDown(this.options.captionAnimationSpeed);break}}else{switch(this.options.captionAnimation){case"none":this.$caption.hide();break;case"fade":this.$caption.fadeOut(this.options.captionAnimationSpeed);break;case"slideOpen":this.$caption.slideUp(this.options.captionAnimationSpeed);break}}},setupDirectionalNav:function(){var c=this,d=b(this.directionalNavHTML);d.find(".right").html(this.options.directionalNavRightText);d.find(".left").html(this.options.directionalNavLeftText);this.$wrapper.append(d);this.$wrapper.find(".left").click(function(){c.stopClock();if(c.options.resetTimerOnClick){c.rotateTimer(true);c.startClock()}c.$element.trigger("orbit.prev")});this.$wrapper.find(".right").click(function(){c.stopClock();if(c.options.resetTimerOnClick){c.rotateTimer(true);c.startClock()}c.$element.trigger("orbit.next")})},setupBulletNav:function(){this.$bullets=b(this.bulletHTML);this.$wrapper.append(this.$bullets);this.$slides.each(this.addBullet);this.$element.addClass("with-bullets");if(this.options.centerBullets){this.$bullets.css("margin-left",-this.$bullets.outerWidth()/2)}},addBullet:function(g,e){var d=g+1,h=b("<li>"+(d)+"</li>"),c,f=this;if(this.options.bulletThumbs){c=b(e).attr("data-thumb");if(c){h.addClass("has-thumb").css({background:"url("+this.options.bulletThumbLocation+c+") no-repeat"})}}this.$bullets.append(h);h.data("index",g);h.click(function(){f.stopClock();if(f.options.resetTimerOnClick){f.rotateTimer(true);f.startClock()}f.$element.trigger("orbit.goto",[h.data("index")])})},setActiveBullet:function(){if(!this.options.bullets){return false}else{this.$bullets.find("li").removeClass("active").eq(this.activeSlide).addClass("active")}},resetAndUnlock:function(){this.$slides.eq(this.prevActiveSlide).css({"z-index":1});this.unlock();this.options.afterSlideChange.call(this,this.$slides.eq(this.prevActiveSlide),this.$slides.eq(this.activeSlide))},shift:function(d){var c=d;this.prevActiveSlide=this.activeSlide;if(this.prevActiveSlide==c){return false}if(this.$slides.length=="1"){return false}if(!this.locked){this.lock();if(d=="next"){this.activeSlide++;if(this.activeSlide==this.numberSlides){this.activeSlide=0}}else{if(d=="prev"){this.activeSlide--;if(this.activeSlide<0){this.activeSlide=this.numberSlides-1}}else{this.activeSlide=d;if(this.prevActiveSlide<this.activeSlide){c="next"}else{if(this.prevActiveSlide>this.activeSlide){c="prev"}}}}this.setActiveBullet();this.notifySlideChange();this.$slides.eq(this.prevActiveSlide).css({"z-index":2});if(this.options.animation=="fade"){this.$slides.eq(this.activeSlide).css({opacity:0,"z-index":3}).animate({opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({opacity:0},this.options.animationSpeed)}if(this.options.animation=="horizontal-slide"){if(c=="next"){this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).css("opacity",1).animate({left:0},this.options.animationSpeed,this.resetAndUnlock)}if(c=="prev"){this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).css("opacity",1).animate({left:0},this.options.animationSpeed,this.resetAndUnlock)}this.$slides.eq(this.prevActiveSlide).css("opacity",0)}if(this.options.animation=="vertical-slide"){if(c=="prev"){this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).css("opacity",0)}if(c=="next"){this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock)}this.$slides.eq(this.prevActiveSlide).css("opacity",0)}if(this.options.animation=="horizontal-push"){if(c=="next"){this.$slides.eq(this.activeSlide).css({left:this.orbitWidth,"z-index":3}).animate({left:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({left:-this.orbitWidth},this.options.animationSpeed,"",function(){b(this).css({opacity:0})})}if(c=="prev"){this.$slides.eq(this.activeSlide).css({left:-this.orbitWidth,"z-index":3}).animate({left:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).animate({left:this.orbitWidth},this.options.animationSpeed,"",function(){b(this).css({opacity:0})})}}if(this.options.animation=="vertical-push"){if(c=="next"){this.$slides.eq(this.activeSlide).css({top:-this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0,opacity:1},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).css("opacity",0).animate({top:this.orbitHeight},this.options.animationSpeed,"")}if(c=="prev"){this.$slides.eq(this.activeSlide).css({top:this.orbitHeight,"z-index":3}).css("opacity",1).animate({top:0},this.options.animationSpeed,this.resetAndUnlock);this.$slides.eq(this.prevActiveSlide).css("opacity",0).animate({top:-this.orbitHeight},this.options.animationSpeed)}}this.setCaption()}if(this.$slides.last()&&this.options.singleCycle){this.stopClock()}}};b.fn.orbit=function(c){return this.each(function(){var d=b.extend({},a);d.init(this,c)})}})(jQuery);
+/*!
+ * jQuery imageready Plugin
+ * http://www.zurb.com/playground/
+ *
+ * Copyright 2011, ZURB
+ * Released under the MIT License
+ */
+(function(c){var b={};c.event.special.imageready={setup:function(f,e,d){b=f||b},add:function(d){var e=c(this),f;if(this.nodeType===1&&this.tagName.toLowerCase()==="img"&&this.src!==""){if(b.forceLoad){f=e.attr("src");e.attr("src","");a(this,d.handler);e.attr("src",f)}else{if(this.complete||this.readyState===4){d.handler.apply(this,arguments)}else{a(this,d.handler)}}}},teardown:function(d){c(this).unbind(".imageready")}};function a(d,f){var e=c(d);e.bind("load.imageready",function(){f.apply(d,arguments);e.unbind("load.imageready")})}}(jQuery));var Holder=Holder||{};(function(b,g){var l=false,f=false,a=document.createElement("canvas");function e(w,I){var x="complete",J="readystatechange",H=!1,A=H,D=!0,z=w.document,F=z.documentElement,C=z.addEventListener?"addEventListener":"attachEvent",G=z.addEventListener?"removeEventListener":"detachEvent",B=z.addEventListener?"":"on",p=function(n){(n.type!=J||z.readyState==x)&&((n.type=="load"?w:z)[G](B+n.type,p,H),!A&&(A=!0)&&I.call(w,null))},q=function(){try{F.doScroll("left")}catch(o){setTimeout(q,50);return}p("poll")};if(z.readyState==x){I.call(w,"lazy")}else{if(z.createEventObject&&F.doScroll){try{D=!w.frameElement}catch(E){}D&&q()}z[C](B+"DOMContentLoaded",p,H),z[C](B+J,p,H),w[C](B+"load",p,H)}}function d(o){o=o.match(/^(\W)?(.*)/);var n=document["getElement"+(o[1]?o[1]=="#"?"ById":"sByClassName":"sByTagName")](o[2]);var p=[];n!=null&&(n.length?p=n:n.length==0?p=n:p=[n]);return p}function i(o,n){var r={};for(var q in o){r[q]=o[q]}for(var p in n){r[p]=n[p]}return r}function k(o,s,q){var p=[s.height,s.width].sort();var u=Math.round(p[1]/16),n=Math.round(p[0]/16);var r=Math.max(q.size,u);a.width=s.width;a.height=s.height;o.textAlign="center";o.textBaseline="middle";o.fillStyle=q.background;o.fillRect(0,0,s.width,s.height);o.fillStyle=q.foreground;o.font="bold "+r+"px sans-serif";var t=q.text?q.text:(s.width+"x"+s.height);if(Math.round(o.measureText(t).width)/s.width>1){r=Math.max(n,q.size)}o.font="bold "+r+"px sans-serif";o.fillText(t,(s.width/2),(s.height/2),s.width);return a.toDataURL("image/png")}if(!a.getContext){f=true}else{if(a.toDataURL("image/png").indexOf("data:image/png")<0){f=true}else{var m=a.getContext("2d")}}var c={domain:"holder.js",images:"img",themes:{gray:{background:"#eee",foreground:"#aaa",size:12},social:{background:"#3a5a97",foreground:"#fff",size:12},industrial:{background:"#434A52",foreground:"#C2F200",size:12}}};b.flags={dimensions:{regex:/([0-9]+)x([0-9]+)/,output:function(o){var n=this.regex.exec(o);return{width:+n[1],height:+n[2]}}},colors:{regex:/#([0-9a-f]{3,})\:#([0-9a-f]{3,})/i,output:function(o){var n=this.regex.exec(o);return{size:c.themes.gray.size,foreground:"#"+n[2],background:"#"+n[1]}}},text:{regex:/text\:(.*)/,output:function(n){return this.regex.exec(n)[1]}}};for(var h in b.flags){b.flags[h].match=function(n){return n.match(this.regex)}}b.add_theme=function(n,o){n!=null&&o!=null&&(c.themes[n]=o);return b};b.add_image=function(s,q){var r=d(q);if(r.length){for(var p=0,n=r.length;p<n;p++){var o=document.createElement("img");o.setAttribute("data-src",s);r[p].appendChild(o)}}return b};b.run=function(s){var A=i(c,s),x=d(A.images),y=true;for(var u=x.length,w=0;w<u;w++){var v=c.themes.gray;var p=x[w].getAttribute("data-src")||x[w].getAttribute("src");if(!!~p.indexOf(A.domain)){var r=false,n=null,z=null;var t=p.substr(p.indexOf(A.domain)+A.domain.length+1).split("/");for(sl=t.length,j=0;j<sl;j++){if(b.flags.dimensions.match(t[j])){r=true;n=b.flags.dimensions.output(t[j])}else{if(b.flags.colors.match(t[j])){v=b.flags.colors.output(t[j])}else{if(A.themes[t[j]]){v=A.themes[t[j]]}else{if(b.flags.text.match(t[j])){z=b.flags.text.output(t[j])}}}}}if(r){x[w].setAttribute("data-src",p);var q=n.width+"x"+n.height;x[w].setAttribute("alt",z?z:v.text?v.text+" ["+q+"]":q);x[w].style.backgroundColor=v.background;var v=(z?i(v,{text:z}):v);if(!f){x[w].setAttribute("src",k(m,n,v))}}}}return b};e(g,function(){l||b.run()})})(Holder,window);(function(b){var a=false;b(document).on("click","a[data-reveal-id]",function(d){d.preventDefault();var c=b(this).attr("data-reveal-id");b("#"+c).reveal(b(this).data())});b.fn.reveal=function(c){var e=b(document),d={animation:"fadeAndPop",animationSpeed:300,closeOnBackgroundClick:true,dismissModalClass:"close-reveal-modal",open:b.noop,opened:b.noop,close:b.noop,closed:b.noop};c=b.extend({},d,c);return this.not(".reveal-modal.open").each(function(){var s=b(this),k=parseInt(s.css("top"),10),n=s.height()+k,m=false,i=b(".reveal-modal-bg"),l={open:{top:0,opacity:0,visibility:"visible",display:"block"},close:{top:k,opacity:1,visibility:"hidden",display:"none"}},h;if(i.length===0){i=b("<div />",{"class":"reveal-modal-bg"}).insertAfter(s);i.fadeTo("fast",0.8)}function o(){m=false}function t(){m=true}function q(){var u=b(".reveal-modal.open");if(u.length===1){a=true;u.trigger("reveal:close")}}function p(){if(!m){t();q();s.addClass("open");if(c.animation==="fadeAndPop"){l.open.top=e.scrollTop()-n;l.open.opacity=0;s.css(l.open);i.fadeIn(c.animationSpeed/2);s.delay(c.animationSpeed/2).animate({top:e.scrollTop()+k+"px",opacity:1},c.animationSpeed,function(){s.trigger("reveal:opened")})}if(c.animation==="fade"){l.open.top=e.scrollTop()+k;l.open.opacity=0;s.css(l.open);i.fadeIn(c.animationSpeed/2);s.delay(c.animationSpeed/2).animate({opacity:1},c.animationSpeed,function(){s.trigger("reveal:opened")})}if(c.animation==="none"){l.open.top=e.scrollTop()+k;l.open.opacity=1;s.css(l.open);i.css({display:"block"});s.trigger("reveal:opened")}}}function f(){var v=s.find(".flex-video"),u=v.find("iframe");if(u.length>0){u.attr("src",u.data("src"));v.fadeIn(100)}}s.bind("reveal:open.reveal",p);s.bind("reveal:open.reveal",f);function j(){if(!m){t();s.removeClass("open");if(c.animation==="fadeAndPop"){s.animate({top:e.scrollTop()-n+"px",opacity:0},c.animationSpeed/2,function(){s.css(l.close)});if(!a){i.delay(c.animationSpeed).fadeOut(c.animationSpeed,function(){s.trigger("reveal:closed")})}else{s.trigger("reveal:closed")}}if(c.animation==="fade"){s.animate({opacity:0},c.animationSpeed,function(){s.css(l.close)});if(!a){i.delay(c.animationSpeed).fadeOut(c.animationSpeed,function(){s.trigger("reveal:closed")})}else{s.trigger("reveal:closed")}}if(c.animation==="none"){s.css(l.close);if(!a){i.css({display:"none"})}s.trigger("reveal:closed")}a=false}}function r(){s.unbind(".reveal");i.unbind(".reveal");h.unbind(".reveal");b("body").unbind(".reveal")}function g(){var v=s.find(".flex-video"),u=v.find("iframe");if(u.length>0){u.data("src",u.attr("src"));u.attr("src","");v.fadeOut(100)}}s.bind("reveal:close.reveal",j);s.bind("reveal:closed.reveal",g);s.bind("reveal:opened.reveal reveal:closed.reveal",o);s.bind("reveal:closed.reveal",r);s.bind("reveal:open.reveal",c.open);s.bind("reveal:opened.reveal",c.opened);s.bind("reveal:close.reveal",c.close);s.bind("reveal:closed.reveal",c.closed);s.trigger("reveal:open");h=b("."+c.dismissModalClass).bind("click.reveal",function(){s.trigger("reveal:close")});if(c.closeOnBackgroundClick){i.css({cursor:"pointer"});i.bind("click.reveal",function(){s.trigger("reveal:close")})}b("body").bind("keyup.reveal",function(u){if(u.which===27){s.trigger("reveal:close")}})})}}(jQuery));(function(e,d,a,f){var c={callback:e.noop,init:false},b={init:function(g){c=e.extend({},g,c);return this.each(function(){if(!c.init){b.events()}})},events:function(){e(a).on("click.fndtn",".tabs a",function(g){b.set_tab(e(this).parent("dd, li"),g)});c.init=true},set_tab:function(j,l){var i=j.closest("dl, ul").find(".active"),k=j.children("a").attr("href"),h=/^#/.test(k),g=e(k+"Tab");if(h&&g.length>0){l.preventDefault();g.closest(".tabs-content").children("li").removeClass("active").hide();g.css("display","block").addClass("active")}i.removeClass("active");j.addClass("active");c.callback()}};e.fn.foundationTabs=function(g){if(b[g]){return b[g].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof g==="object"||!g){return b.init.apply(this,arguments)}else{e.error("Method "+g+" does not exist on jQuery.foundationTabs")}}}}(jQuery,this,this.document));(function(d,c,e){var b={bodyHeight:0,selector:".has-tip",additionalInheritableClasses:[],tooltipClass:".tooltip",tipTemplate:function(f,g){return'<span data-selector="'+f+'" class="'+b.tooltipClass.substring(1)+'">'+g+'<span class="nub"></span></span>'}},a={init:function(f){b=d.extend(b,f);b.selector=b.targetClass?b.targetClass:b.selector;return this.each(function(){var g=d("body");if(Modernizr.touch){g.on("click.tooltip touchstart.tooltip touchend.tooltip",b.selector,function(h){h.preventDefault();d(b.tooltipClass).hide();a.showOrCreateTip(d(this))});g.on("click.tooltip touchstart.tooltip touchend.tooltip",b.tooltipClass,function(h){h.preventDefault();d(this).fadeOut(150)})}else{g.on("mouseenter.tooltip mouseleave.tooltip",b.selector,function(i){var h=d(this);if(i.type==="mouseenter"){a.showOrCreateTip(h)}else{if(i.type==="mouseleave"){a.hide(h)}}})}d(this).data("tooltips",true)})},showOrCreateTip:function(f){var g=a.getTip(f);if(g&&g.length>0){a.show(f)}else{a.create(f)}},getTip:function(g){var f=a.selector(g),h=null;if(f){h=d("span[data-selector="+f+"]"+b.tooltipClass)}return(h.length>0)?h:false},selector:function(f){var h=f.attr("id"),g=f.data("selector");if(h===e&&g===e){g="tooltip"+Math.random().toString(36).substring(7);f.attr("data-selector",g)}return(h)?h:g},create:function(f){var h=d(b.tipTemplate(a.selector(f),d("<div>").html(f.attr("title")).html())),g=a.inheritable_classes(f);h.addClass(g).appendTo("body");if(Modernizr.touch){h.append('<span class="tap-to-close">tap to close </span>')}f.removeAttr("title");a.show(f)},reposition:function(j,m,h){var f,n,l,i,g,k;m.css("visibility","hidden").show();f=j.data("width");n=m.children(".nub");l=n.outerHeight();i=n.outerWidth();k=function(t,s,p,o,r,q){return t.css({top:s,bottom:o,left:r,right:p,width:(q)?q:"auto"}).end()};k(m,(j.offset().top+j.outerHeight()+10),"auto","auto",j.offset().left,f);k(n,-l,"auto","auto",10);if(d(c).width()<767){g=j.closest(".columns");if(g.length<0){g=d("body")}m.width(g.outerWidth()-25).css("left",15).addClass("tip-override");k(n,-l,"auto","auto",j.offset().left)}else{if(h&&h.indexOf("tip-top")>-1){k(m,(j.offset().top-m.outerHeight()-l),"auto","auto",j.offset().left,f).removeClass("tip-override");k(n,"auto","auto",-l,"auto")}else{if(h&&h.indexOf("tip-left")>-1){k(m,(j.offset().top+(j.outerHeight()/2)-l),"auto","auto",(j.offset().left-m.outerWidth()-10),f).removeClass("tip-override");k(n,(m.outerHeight()/2)-(l/2),-l,"auto","auto")}else{if(h&&h.indexOf("tip-right")>-1){k(m,(j.offset().top+(j.outerHeight()/2)-l),"auto","auto",(j.offset().left+j.outerWidth()+10),f).removeClass("tip-override");k(n,(m.outerHeight()/2)-(l/2),"auto","auto",-l)}}}}m.css("visibility","visible").hide()},inheritable_classes:function(i){var h=["tip-top","tip-left","tip-bottom","tip-right","noradius"].concat(b.additionalInheritableClasses),g=i.attr("class"),f=g?d.map(g.split(" "),function(k,j){if(d.inArray(k,h)!==-1){return k}}).join(" "):"";return d.trim(f)},show:function(f){var g=a.getTip(f);a.reposition(f,g,f.attr("class"));g.fadeIn(150)},hide:function(f){var g=a.getTip(f);g.fadeOut(150)},reload:function(){var f=d(this);return(f.data("tooltips"))?f.foundationTooltips("destroy").foundationTooltips("init"):f.foundationTooltips("init")},destroy:function(){return this.each(function(){d(c).off(".tooltip");d(b.selector).off(".tooltip");d(b.tooltipClass).each(function(f){d(d(b.selector).get(f)).attr("title",d(this).text())}).remove()})}};d.fn.foundationTooltips=function(f){if(a[f]){return a[f].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof f==="object"||!f){return a.init.apply(this,arguments)}else{d.error("Method "+f+" does not exist on jQuery.foundationTooltips")}}}}(jQuery,this));(function(d,c,e){var b={index:0,initialized:false},a={init:function(f){return this.each(function(){b=d.extend(b,f);b.$w=d(c),b.$topbar=d("nav.top-bar"),b.$section=b.$topbar.find("section"),b.$titlebar=b.$topbar.children("ul:first");var g=d("<div class='top-bar-js-breakpoint'/>").appendTo("body");b.breakPoint=g.width();g.remove();if(!b.initialized){a.assemble();b.initialized=true}if(!b.height){a.largestUL()}if(b.$topbar.parent().hasClass("fixed")){d("body").css("padding-top",b.$topbar.outerHeight())}d(".top-bar .toggle-topbar").die("click.fndtn").live("click.fndtn",function(h){h.preventDefault();if(a.breakpoint()){b.$topbar.toggleClass("expanded");b.$topbar.css("min-height","")}if(!b.$topbar.hasClass("expanded")){b.$section.css({left:"0%"});b.$section.find(">.name").css({left:"100%"});b.$section.find("li.moved").removeClass("moved");b.index=0}});d(".top-bar .has-dropdown>a").die("click.fndtn").live("click.fndtn",function(j){if(Modernizr.touch||a.breakpoint()){j.preventDefault()}if(a.breakpoint()){var i=d(this),h=i.closest("li");b.index+=1;h.addClass("moved");b.$section.css({left:-(100*b.index)+"%"});b.$section.find(">.name").css({left:100*b.index+"%"});i.siblings("ul").height(b.height+b.$titlebar.outerHeight(true));b.$topbar.css("min-height",b.height+b.$titlebar.outerHeight(true)*2)}});d(c).on("resize.fndtn.topbar",function(){if(!a.breakpoint()){b.$topbar.css("min-height","")}});d(".top-bar .has-dropdown .back").die("click.fndtn").live("click.fndtn",function(k){k.preventDefault();var j=d(this),i=j.closest("li.moved"),h=i.parent();b.index-=1;b.$section.css({left:-(100*b.index)+"%"});b.$section.find(">.name").css({left:100*b.index+"%"});if(b.index===0){b.$topbar.css("min-height",0)}setTimeout(function(){i.removeClass("moved")},300)})})},breakpoint:function(){return b.$w.width()<b.breakPoint},assemble:function(){b.$section.detach();b.$section.find(".has-dropdown>a").each(function(){var f=d(this),h=f.siblings(".dropdown"),g=d('<li class="title back js-generated"><h5><a href="#"></a></h5></li>');g.find("h5>a").html(f.html());h.prepend(g)});b.$section.appendTo(b.$topbar)},largestUL:function(){var g=b.$topbar.find("section ul ul"),h=g.first(),f=0;g.each(function(){if(d(this).children("li").length>h.children("li").length){h=d(this)}});h.children("li").each(function(){f+=d(this).outerHeight(true)});b.height=f}};d.fn.foundationTopBar=function(f){if(a[f]){return a[f].apply(this,Array.prototype.slice.call(arguments,1))}else{if(typeof f==="object"||!f){return a.init.apply(this,arguments)}else{d.error("Method "+f+" does not exist on jQuery.foundationTopBar")}}}}(jQuery,this));/*! http://mths.be/placeholder v2.0.7 by @mathias */
+(function(g,i,d){var a="placeholder" in i.createElement("input"),e="placeholder" in i.createElement("textarea"),j=d.fn,c=d.valHooks,l,k;if(a&&e){k=j.placeholder=function(){return this};k.input=k.textarea=true}else{k=j.placeholder=function(){var m=this;m.filter((a?"textarea":":input")+"[placeholder]").not(".placeholder").bind({"focus.placeholder":b,"blur.placeholder":f}).data("placeholder-enabled",true).trigger("blur.placeholder");return m};k.input=a;k.textarea=e;l={get:function(n){var m=d(n);return m.data("placeholder-enabled")&&m.hasClass("placeholder")?"":n.value},set:function(n,o){var m=d(n);if(!m.data("placeholder-enabled")){return n.value=o}if(o==""){n.value=o;if(n!=i.activeElement){f.call(n)}}else{if(m.hasClass("placeholder")){b.call(n,true,o)||(n.value=o)}else{n.value=o}}return m}};a||(c.input=l);e||(c.textarea=l);d(function(){d(i).delegate("form","submit.placeholder",function(){var m=d(".placeholder",this).each(b);setTimeout(function(){m.each(f)},10)})});d(g).bind("beforeunload.placeholder",function(){d(".placeholder").each(function(){this.value=""})})}function h(n){var m={},o=/^jQuery\d+$/;d.each(n.attributes,function(q,p){if(p.specified&&!o.test(p.name)){m[p.name]=p.value}});return m}function b(n,o){var m=this,p=d(m);if(m.value==p.attr("placeholder")&&p.hasClass("placeholder")){if(p.data("placeholder-password")){p=p.hide().next().show().attr("id",p.removeAttr("id").data("placeholder-id"));if(n===true){return p[0].value=o}p.focus()}else{m.value="";p.removeClass("placeholder");m==i.activeElement&&m.select()}}}function f(){var r,m=this,q=d(m),n=q,p=this.id;if(m.value==""){if(m.type=="password"){if(!q.data("placeholder-textinput")){try{r=q.clone().attr({type:"text"})}catch(o){r=d("<input>").attr(d.extend(h(this),{type:"text"}))}r.removeAttr("name").data({"placeholder-password":true,"placeholder-id":p}).bind("focus.placeholder",b);q.data({"placeholder-textinput":r,"placeholder-id":p}).before(r)}q=q.removeAttr("id").hide().prev().attr("id",p).show()}q.addClass("placeholder");q[0].value=q.attr("placeholder")}else{q.removeClass("placeholder")}}}(this,document,jQuery));
+
+
+/* =======================
+   ====== COMMON.JS ======
+   ======================= */
+
+/* Common Javascript functions for use throughout Interspire Shopping Cart */
+
+$(function(){
+	// this is here just incase the HTMLHead code fails
+	$('html').addClass('javascript');
+});
+
+// fast cart pop-up
+var fastCart = function(subject){
+	var gotoProd = false;
+
+	if( subject.prop('tagName') == 'A' ) // LINK
+	{
+		var url = subject.attr('href');
+		var linkType = subject.is(':contains("Add To Cart")') ? "standard" : "options";
+
+		if(linkType == "standard"){
+			// strip protocol from url to fix cross protocol ajax access denied problem
+			url = url.replace(/^http[s]{0,1}:\/\/[^\/]*\/?/, '/');
+			url += '&fastcart=1';
+
+			$.ajax({
+				url: url,
+				dataType: 'json',
+				success: function(data)	{
+					if (data.success) {
+						openFastCart(data.imodal);
+					}
+					else if (data.redirect) {
+						window.location.href = data.redirect;
+					}
+				}
+			});
+		}else{
+			gotoProd = true;
+		}
+	}
+	else if( subject.prop('tagName') == 'FORM' ) // FORM
+	{
+		subject.ajaxSubmit({
+			data: {
+				fastcart: 1,
+				ajaxsubmit: 1
+			},
+			type: 'post',
+			iframe: true,
+			dataType: 'json',
+			success: function(data)	{
+				if (data.success) {
+					openFastCart(data.imodal);
+				}
+				else if (data.redirect) {
+					window.location.href = data.redirect;
+				}
+			}
+		});
+	}
+
+
+	return gotoProd;
+};
+
+var openFastCart = function(data){
+	$('#FastCart > div').html(data);
+	$("#FastCart").reveal();
+	productGridEvenImages();
+	productGridEvenBoxes();
+};
+
+// Fetch the value of a cookie
+function get_cookie(name) {
+	name = name += "=";
+	var cookie_start = document.cookie.indexOf(name);
+	if(cookie_start > -1) {
+		cookie_start = cookie_start+name.length;
+		cookie_end = document.cookie.indexOf(';', cookie_start);
+		if(cookie_end == -1) {
+			cookie_end = document.cookie.length;
+		}
+		return unescape(document.cookie.substring(cookie_start, cookie_end));
+	}
+}
+
+// Set a cookie
+function set_cookie(name, value, expires)
+{
+	if(!expires) {
+		expires = "; expires=Wed, 1 Jan 2020 00:00:00 GMT;"
+	} else {
+		expire = new Date();
+		expire.setTime(expire.getTime()+(expires*1000));
+		expires = "; expires="+expire.toGMTString();
+	}
+	document.cookie = name+"="+escape(value)+expires;
+}
+
+/* Javascript functions for the products page */
+var num_products_to_compare = 0;
+var product_option_value = "";
+
+function CheckQuantityLimits (form)
+{
+	var qty = parseInt($('#qty_').val(), 10);
+
+	if (!qty) {
+		// If text fields are being used for 'quantity' we need to get this value instead:
+		qty = parseInt($('#text_qty_').val(), 10);
+	}
+
+	if (qty < productMinQty) {
+		alert(lang.ProductMinQtyError);
+		return false;
+	}
+
+	if (qty > productMaxQty) {
+		alert(lang.ProductMaxQtyError);
+		return false;
+	}
+
+	return true;
+}
+
+function CheckProductConfigurableFields(form)
+{
+	var requiredFields = $('.FieldRequired');
+	var valid = true;
+	requiredFields.each(function() {
+		var namePart = this.name.replace(/^.*\[/, '');
+		var fieldId = namePart.replace(/\].*$/, '');
+
+		if(this.type=='checkbox' ) {
+			if(!this.checked) {
+				valid = false;
+				alert(lang.EnterRequiredField);
+				this.focus();
+				return false;
+			}
+		} else if(this.value == '') {
+			if(this.type != 'file' || (this.type == 'file' && document.getElementById('CurrentProductFile_'+fieldId).value == '')) {
+				valid = false;
+				alert(lang.EnterRequiredField);
+				this.focus();
+				return false;
+			}
+		}
+	});
+
+	var fileFields = $(form).find("input[name^='ProductField']:file");
+	fileFields.each(function() {
+		if(this.value != '') {
+			var namePart = this.name.replace(/^.*\[/, '');
+			var fieldId = namePart.replace(/\].*$/, '');
+			var fileTypes = document.getElementById('ProductFileType_'+fieldId).value;
+
+			fileTypes = ','+fileTypes.replace(' ', '').toLowerCase()+','
+			var ext = this.value.replace(/^.*\./, '').toLowerCase();
+
+			if(fileTypes.indexOf(','+ext+',') == -1) {
+				alert(lang.InvalidFileTypeJS);
+				this.focus();
+				this.select();
+				valid = false;
+			}
+
+		}
+	});
+
+	return valid;
+}
+
+function check_add_to_cart(form, required) {
+	var valid = true;
+	var qtyInputs = $(form).find('input.qtyInput');
+	qtyInputs.each(function() {
+		if(isNaN($(this).val()) || $(this).val() <= 0) {
+			alert(lang.InvalidQuantity);
+			this.focus();
+			this.select();
+			valid = false;
+			return false;
+		}
+	});
+	if(valid == false) {
+		return false;
+	}
+
+	if(!CheckProductConfigurableFields(form)) {
+		return false;
+	}
+
+	// validate the attributes
+	var attributesValidated = $('#productDetailsAddToCartForm')
+		.validate()
+		.form();
+
+	if (!attributesValidated) {
+		return false;
+	}
+
+	if (!CheckQuantityLimits(form)) {
+		return false;
+	}
+
+	if(required && !$(form).find('.CartVariationId').val()) {
+		alert(lang.OptionMessage);
+		var select = $(form).find('select').get(0);
+		if(select) {
+			select.focus();
+		}
+		var radio = $(form).find('input[type=radio]').get(0);
+		if(radio) {
+			radio.focus();
+		}
+		return false;
+	}
+
+	if (!CheckEventDate()) {
+		return false;
+	}
+
+	// if we're using the fastcart, pop that up now
+	if (config.FastCart) {
+		return fastCart($(form));
+	}
+
+	return true;
+}
+
+function compareProducts(compare_path) {
+	var pids = "";
+
+	if($('form').find('input[name=compare_product_ids]:checked').size() >= 2) {
+		var cpids = document.getElementsByName('compare_product_ids');
+
+		for(i = 0; i < cpids.length; i++) {
+			if(cpids[i].checked)
+				pids = pids + cpids[i].value + "/";
+		}
+
+		pids = pids.replace(/\/$/, "");
+		document.location.href = compare_path + pids;
+		return false;
+	}
+
+	alert(lang.CompareSelectMessage);
+	return false;
+}
+
+function product_comparison_box_changed(state) {
+	// Increment num_products_to_compare - needs to be > 0 to submit the product comparison form
+
+
+	if(state)
+		num_products_to_compare++;
+	else
+		if (num_products_to_compare != 0)
+			num_products_to_compare--;
+}
+
+function remove_product_from_comparison(id) {
+	if(num_compare_items > 2) {
+		for(i = 1; i < 11; i++) {
+			document.getElementById("compare_"+i+"_"+id).style.display = "none";
+		}
+
+		num_compare_items--;
+	}
+	else {
+		alert(lang.CompareTwoProducts);
+	}
+}
+
+(function($){
+	$.fn.captchaPlaceholder = function () {
+		$(this).each(function(){
+			var $$ = $(this);
+
+			if (!$$.parent().is(':visible')) {
+				// don't do anything if this placeholder isn't visible
+				return;
+			}
+
+			var img = $$.find('.captchaImage');
+			if (img.length) {
+				// don't do anything if an image is already in the dom
+				return;
+			}
+
+			var rand = Math.round(500 + Math.random() * 7500);
+			img = $('<img class="captchaImage" src="' + config.ShopPath + '/captcha.php?' + rand + '" />');
+			$$.append(img);
+		});
+
+		return this;
+	};
+})(jQuery);
+
+function g(id) {
+	return document.getElementById(id);
+}
+
+function check_product_review_form() {
+	var revrating = g("revrating");
+	var revtitle = g("revtitle");
+	var revtext = g("revtext");
+	var revfromname = g("revfromname");
+	var captcha = g("captcha");
+
+	if(revrating.selectedIndex == 0) {
+		alert(lang.ReviewNoRating);
+		revrating.focus();
+		return false;
+	}
+
+	if(revtitle.value == "") {
+		alert(lang.ReviewNoTitle);
+		revtitle.focus();
+		return false;
+	}
+
+	if(revtext.value == "") {
+		alert(lang.ReviewNoText);
+		revtext.focus();
+		return false;
+	}
+
+	if(captcha.value == "" && HideReviewCaptcha != "none") {
+		alert(lang.ReviewNoCaptcha);
+		captcha.focus();
+		return false;
+	}
+
+	return true;
+}
+
+function check_small_search_form() {
+	var search_query = g("search_query");
+
+	if(search_query.value == "") {
+		search_query.focus();
+		return false;
+	}
+
+	return true;
+}
+
+function setCurrency(currencyId)
+{
+	var gotoURL = location.href;
+
+	if (location.search !== '')
+	{
+		if (gotoURL.search(/[&|\?]setCurrencyId=[0-9]+/) > -1)
+			gotoURL = gotoURL.replace(/([&|\?]setCurrencyId=)[0-9]+/, '$1' + currencyId);
+		else
+			gotoURL = gotoURL + '&setCurrencyId=' + currencyId;
+	}
+	else
+		gotoURL = gotoURL + '?setCurrencyId=' + currencyId;
+
+	location.href = gotoURL;
+}
+
+
+// Dummy sel_panel function for when design mode isn't enabled
+function sel_panel(id) {}
+
+function inline_add_to_cart(filename, product_id, quantity, returnTo) {
+	if(typeof(quantity) == 'undefined') {
+		var quantity = '1';
+	}
+	var html = '<form action="' + filename + '/cart.php" method="post" id="inlineCartAdd">';
+	if(typeof(returnTo) != 'undefined' && returnTo == true) {
+		var returnLocation = window.location;
+		html += '<input type="hidden" name="returnUrl" value="'+escape(returnLocation)+'" />';
+	}
+	html += '<input type="hidden" name="action" value="add" />';
+	html += '<input type="hidden" name="qty" value="'+quantity+'" />';
+	html += '<input type="hidden" name="product_id" value="'+product_id+'" />';
+	html += '<\/form>';
+   $('body').append(html);
+   $('#inlineCartAdd').submit();
+}
+
+function ShowPopupHelp(content, url, decodeHtmlEntities) {
+	var popupWindow = open('', 'view','height=450,width=550');
+
+	if(decodeHtmlEntities) {
+		content = HtmlEntityDecode(content);
+	}
+	if (window.focus) {
+		popupWindow.focus();
+	}
+
+	var doc = popupWindow.document;
+	doc.write(content);
+	doc.close();
+
+	return false;
+}
+
+function HtmlEntityDecode(str) {
+   try {
+	  var tarea=document.createElement('textarea');
+	  tarea.innerHTML = str; return tarea.value;
+	  tarea.parentNode.removeChild(tarea);
+   } catch(e) {
+	  //for IE add <div id="htmlconverter" style="display:none;"></div> to the page
+	  document.getElementById("htmlconverter").innerHTML = '<textarea id="innerConverter">' + str + '</textarea>';
+	  var content = document.getElementById("innerConverter").value;
+	  document.getElementById("htmlconverter").innerHTML = "";
+	  return content;
+   }
+}
+
+// Dummy JS object to hold language strings.
+if (typeof lang == 'undefined') { lang = {}; }
+
+/**
+* A javascript equivalent of server-side getLang method with replacements support. The specified language entry must be
+* present in the lang object. Returns a blank string if it is not.
+*
+* Usage:
+* getLang('ProductMinQtyError', { qty: 10, product: 'Test Product' }); // pass the name of the language entry
+*
+* @param string name
+* @param object replacements
+* @return string
+*/
+function getLang (name, replacements)
+{
+	if (!lang[name]) {
+		return '';
+	}
+
+	var string = lang[name];
+	if (typeof replacements != 'object') {
+		return string;
+	}
+
+	$.each(replacements, function(needle, haystack){
+		string = string.replace(':' + needle, haystack);
+	});
+
+	return string;
+}
+
+// IE 6 doesn't support the :hover selector on elements other than links, so
+// we use jQuery to work some magic to get our hover styles applied.
+if(document.all) {
+	var isIE7 = /*@cc_on@if(@_jscript_version>=5.7)!@end@*/false;
+	if(isIE7 == false) {
+		$(document).ready(function() {
+			$('.ProductList li').hover(function() {
+				$(this).addClass('Over');
+			},
+			function() {
+				$(this).removeClass('Over');
+			});
+			$('.ComparisonTable tr').hover(function() {
+				$(this).addClass('Over');
+			},
+			function() {
+				$(this).removeClass('Over');
+			});
+		});
+	}
+	$('.ProductList li:last-child').addClass('LastChild');
+}
+
+function ShowLoadingIndicator() {
+	if (typeof(disableLoadingIndicator) != 'undefined' && disableLoadingIndicator) {
+		return;
+	}
+	var width = $(window).width();
+	var position = $('#Container').css('position');
+	if (position == 'relative') {
+		width = $('#Container').width();
+	}
+
+	var scrollTop;
+	if(self.pageYOffset) {
+		scrollTop = self.pageYOffset;
+	}
+	else if(document.documentElement && document.documentElement.scrollTop) {
+		scrollTop = document.documentElement.scrollTop;
+	}
+	else if(document.body) {
+		scrollTop = document.body.scrollTop;
+	}
+	//$('#AjaxLoading').css('position', 'absolute');
+	//$('#AjaxLoading').css('top', scrollTop+'px');
+	//$('#AjaxLoading').css('left', parseInt((width-150)/2)+"px");
+	$('#AjaxLoading').show();
+}
+
+function HideLoadingIndicator() {
+	$('#AjaxLoading').hide();
+}
+
+
+
+function fastCartAction(event) {
+	var url = '';
+
+	var modalOptions;
+
+	// Supplied URL
+	if (typeof(event) == 'string') {
+		var url = event;
+
+		// Make sure a valid URL was supplied
+		if (!url || url.indexOf('cart.php') == -1) {
+			return false;
+		}
+
+		// strip protocol from url to fix cross protocol ajax access denied problem
+		url = url.replace(/^http[s]{0,1}:\/\/[^\/]*\/?/, '/');
+		url += '&fastcart=1';
+
+		$.ajax({
+			url: url,
+			dataType: 'json',
+			success: function(data)	{
+				if (data.success) {
+					modalOptions = {
+						data: data
+					};
+					_showFastCart(modalOptions);
+				}
+				else if (data.redirect) {
+					window.location.href = data.redirect;
+				}
+			}
+		});
+	}
+	// 'Add' button on product details page
+	else {
+		$('#productDetailsAddToCartForm').ajaxSubmit({
+			data: {
+				fastcart: 1,
+				ajaxsubmit: 1
+			},
+			type: 'post',
+			iframe: true,
+			dataType: 'json',
+			success: function(data)	{
+				if (data.success) {
+					modalOptions = {
+						data: data
+					};
+					_showFastCart(modalOptions);
+				}
+				else if (data.redirect) {
+					window.location.href = data.redirect;
+				}
+			}
+		});
+	}
+
+	return false;
+}
+
+function _showFastCart(modalOptions) {
+	modalOptions = $.extend({
+		width: 700,
+		closeTxt: true,
+		onShow: function() {
+			$("#fastCartSuggestive a[href*='cart.php?action=add']").unbind('click');
+
+			var itemTxt = $('#fastCartNumItemsTxt').html();
+			if (itemTxt) {
+				// update the view cart item count on top menu
+				$('.CartLink span').html('(' + itemTxt + ')');
+			}
+			//setProductListHeights(null, '.fastCartContent');
+			$('.fastCartContent .ProductList:not(.List) li').width(ThumbImageWidth);
+		},
+		onClose: function() {
+			if (window.location.href.match(config.ShopPath + '/cart.php')) {
+				// reload if we are on the cart page
+				$('#ModalContainer').remove();
+				window.location = window.location.href
+			} else {
+				$('#ModalContainer').remove();
+			}
+		}
+	}, modalOptions);
+
+	$.iModal.close();
+	$.iModal(modalOptions);
+}
+
+/**
+* Adds a script tag to the DOM that forces a hit to tracksearchclick. Should be called by a mousedown event as calling it by a click event can sometimes be cancelled by the browser navigating away from the page.
+*/
+function isc_TrackSearchClick (searchId) {
+	if (!searchId) {
+		return;
+	}
+
+	$('#SearchTracker').remove();
+
+	var trackurl = 'search.php?action=tracksearchclick&searchid=' + encodeURIComponent(searchId) + '&random=' + Math.random();
+
+	var script = document.createElement('script');
+	script.type = "text/javascript";
+	script.src = trackurl;
+	script.id = "SearchTracker";
+
+	window.document.body.appendChild(script);
+}
+
+$(document).ready(function() {
+
+
+	$('html').ajaxStart(function() {
+		ShowLoadingIndicator();
+	});
+
+	$('html').ajaxComplete(function() {
+		HideLoadingIndicator();
+	});
+
+	// generic checkbox => element visibility toggle based on id of checkbox and class names of other elements
+	$('.CheckboxTogglesOtherElements').live('change', function(event){
+		if (!this.id) {
+			return;
+		}
+
+		var className = 'ShowIf_' + this.id + '_Checked';
+		var elements = $('.' + className);
+
+		if (this.checked) {
+			// easy, show matching elements
+			elements.show();
+			return;
+		}
+
+		// if not checked it's a little more tricky -- only hide elements if they are not showing for multiple check boxes
+		var classExpression = /^ShowIf_(.+)_Checked$/;
+		elements.each(function(){
+			var $$ = $(this);
+
+			// before hiding this element, check its classes to see if it has another ShowIf_?_Checked - if it does, see if that class points to a checked box
+			var classes = $$.attr('class').split(/\s+/);
+			var checked = false;
+			$.each(classes, function(key,value){
+				if (value === className) {
+					// we're processing this class already so we know it's unchecked - ignore it
+					return;
+				}
+
+				var result = classExpression.exec(value);
+				if (result === null) {
+					// not a ShowIf_?_Class
+					return;
+				}
+
+				var id = result[1];
+				if ($('#' + id ).attr('checked')) {
+					// found a checked box
+					checked = true;
+					return false;
+				}
+			});
+
+			if (!checked) {
+				// found no checkbox that should be keeping this element visible
+				$$.hide();
+			}
+		});
+
+	}).change();
+});
+
+/**
+ * Add a method to the Date object prototype to set the full
+ * year using an ISO 8601 format string.
+ *
+ * Usage:
+ * var d = new Date();
+ * d.setISO('1980-01-08');
+ */
+if (typeof Date.prototype.setISO == 'undefined') {
+	Date.prototype.setISO = function (isoFmt) {
+		var dtparts = isoFmt.split('-');
+		this.setFullYear(dtparts[0], dtparts[1] - 1, dtparts[2]);
+	};
+}
+
+/**
+ * This disables the process payment button. It's here because otherwise it'd require a template
+ * change to about 20 files.
+ */
+$('form[action$="process_payment"]').live('submit', function(ev){
+	if (ev.isDefaultPrevented()) {
+		return;
+	}
+
+    var submitFunc = this.onsubmit;
+    if(submitFunc && submitFunc() == false){
+        ev.preventDefault();
+        return;
+    }
+
+	var self = this,
+		disabler = function () {
+			$('input[type="submit"]', self)
+				.val("Processing Your Order...")
+				.attr('disabled', 'disabled');
+		};
+
+	// for opera, just submit straight away. opera doesn't process the timeout (ie. js/events) after navigation.
+	if ($.browser.opera) {
+		disabler();
+	} else {
+		// IE flavours need a timeout to allow submit button disabling.
+		setTimeout(disabler, 1);
+	}
+});
+
+// TODO: rewirte this
+$('#OrderConfirmationForm').live('submit', function(ev){
+	if (ev.isDefaultPrevented()) {
+		return;
+	}
+    var submitFunc = this.onsubmit;
+    if(submitFunc && submitFunc() == false){
+        ev.preventDefault();
+        return;
+    }
+	var self = this,
+	disabler = function () {
+		$('#bottom_payment_button', self)
+		.attr('disabled', 'disabled');
+	};
+
+	// for opera, just submit straight away. opera doesn't process the timeout (ie. js/events) after navigation.
+	if ($.browser.opera) {
+		disabler();
+	} else {
+		// IE flavours need a timeout to allow submit button disabling.
+		setTimeout(disabler, 1);
+	}
+});
+
+function htmlspecialchars_decode (string, quote_style) {
+    // http://kevin.vanzonneveld.net
+    // +   original by: Mirek Slugen
+    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+    // +   bugfixed by: Mateusz "loonquawl" Zalega
+    // +      input by: ReverseSyntax
+    // +      input by: Slawomir Kaniecki
+    // +      input by: Scott Cariss
+    // +      input by: Francois
+    // +   bugfixed by: Onno Marsman
+    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
+    // +      input by: Ratheous
+    // +      input by: Mailfaker (http://www.weedem.fr/)
+    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
+    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
+    // *     example 1: htmlspecialchars_decode("<p>this -&gt; &quot;</p>", 'ENT_NOQUOTES');
+    // *     returns 1: '<p>this -> &quot;</p>'
+    // *     example 2: htmlspecialchars_decode("&amp;quot;");
+    // *     returns 2: '&quot;'
+    var optTemp = 0,
+        i = 0,
+        noquotes = false;
+    if (typeof quote_style === 'undefined') {
+        quote_style = 2;
+    }
+    string = string.toString().replace(/&lt;/g, '<').replace(/&gt;/g, '>');
+    var OPTS = {
+        'ENT_NOQUOTES': 0,
+        'ENT_HTML_QUOTE_SINGLE': 1,
+        'ENT_HTML_QUOTE_DOUBLE': 2,
+        'ENT_COMPAT': 2,
+        'ENT_QUOTES': 3,
+        'ENT_IGNORE': 4
+    };
+    if (quote_style === 0) {
+        noquotes = true;
+    }
+    if (typeof quote_style !== 'number') { // Allow for a single string or an array of string flags
+        quote_style = [].concat(quote_style);
+        for (i = 0; i < quote_style.length; i++) {
+            // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4
+            if (OPTS[quote_style[i]] === 0) {
+                noquotes = true;
+            } else if (OPTS[quote_style[i]]) {
+                optTemp = optTemp | OPTS[quote_style[i]];
+            }
+        }
+        quote_style = optTemp;
+    }
+    if (quote_style & OPTS.ENT_HTML_QUOTE_SINGLE) {
+        string = string.replace(/&#0*39;/g, "'"); // PHP doesn't currently escape if more than one 0, but it should
+        // string = string.replace(/&apos;|&#x0*27;/g, "'"); // This would also be useful here, but not a part of PHP
+    }
+    if (!noquotes) {
+        string = string.replace(/&quot;/g, '"');
+    }
+    // Put this in last place to avoid escape being double-decoded
+    string = string.replace(/&amp;/g, '&');
+
+    return string;
+}
+
+/**
+ * Converts price in string format back to numeric value
+ * eg. '$99.99 AUD' -> 99.99
+ * @param string price -- price in the string format with possible currency 
+ * indicators and separators
+ */
+function convertPriceStringToNumber(price){
+	return Number(price.replace(/[^0-9\.]+/g,""));
+}
+
+/**
+ * Parses a csv string of ids (eg, 1,2,3) into a array containing numeric
+ * value of each id
+ * @param ids
+ * @param delimeter
+ */
+function parseCsvIdsToNumericArray(ids,delimeter){
+	return ids.split(delimeter).map(Number);
+}
+
+
+function createCookie(name,value,days) 
+{
+	var expires = '';
+	if (days) {
+		var date = new Date();
+		date.setDate(date.getDate() + days);
+		expires = "; expires=" + date.toGMTString();
+	}
+	document.cookie = name + "=" + value + expires+"; path=/";
+}
+
+function acceptCookieUsage()
+{
+	if(document.cookie.indexOf('ACCEPT_COOKIE_USAGE') == -1){
+		$.ajax({
+			url: config.ShopPath + '/remote.php?w=getCookieNotification',
+			type: 'GET',
+			dataType: 'JSON',
+			success: function(response){
+				if(response.html != ''){
+					$('body').prepend(response.html);
+				}
+			}
+		});
+	}
+}
+
+/**
+ * Changes social sharing tabs and content within sharing widget
+ * @param {String} serviceId The ID of the sharing service to be used.
+ * @param {Number} productId The ID of the product to be shared.
+ */
+function switchSocialSharingTabs(serviceId, productId) {
+	$('.sharingTab').removeClass('active');
+	$('.' + serviceId).addClass('active');
+
+	updateShareButton(serviceId, productId);
+	updateSocialSharingPanel(productId);
+}
+
+/**
+ * Get the currently active social sharing tab.
+ * @return {String} The ID of the currently active social sharing service.
+ */
+function activeSocialSharingServiceId()
+{
+	return $('.sharingTab.active').attr('id').replace('tab', '');
+}
+
+/**
+ * Update the share button to share the given product on the given service.
+ * @param {String} serviceId The service on which to share the given product.
+ * @param {Number} productId The ID of the product to share.
+ */
+function updateShareButton(serviceId, productId) {
+	$('.sharebutton a').attr('href', sharingData[productId][serviceId]['sharingLink']);
+}
+
+/**
+ * Preload images and build the social sharing panel.
+ * @param {Number} shareProductId
+ */
+function initSocialSharingPanel(shareProductId)
+{
+	var productCount = objectLength(sharingData);
+	var loadedProductCount = 0;
+	$.each(sharingData, function(productId, services) {
+		var serviceCount = objectLength(services);
+		var loadedServiceCount = 0;
+		$.each(services, function(serviceId, productSharingDetails) {
+			productSharingDetails['imageElement'] = $("<img/>").attr("src", productSharingDetails['image']).attr("alt", "").one("load", function() {
+				loadedServiceCount++;
+				if (loadedServiceCount == serviceCount) {
+					loadedProductCount++;
+					if (loadedProductCount == productCount) {
+						switchSocialSharingTabs(activeSocialSharingServiceId(), shareProductId);
+					}
+					return false;
+				}
+			});
+		});
+	});
+}
+
+/**
+ * Calculate the number of owned properties of an object.
+ * @param object
+ * @return {Number}
+ */
+function objectLength(object)
+{
+	if (typeof object != "object") {
+		return 0;
+	}
+	var count = 0;
+	for (i in object) {
+		if (object.hasOwnProperty(i)) {
+			count++;
+		}
+	}
+	return count;
+}
+
+/**
+ * Updates sharing panel with new product details.
+ * Used when multiple products exist (eg orders) to swap the product to be shared
+ * @param productId
+ */
+function updateSocialSharingPanel(productId) {
+	shareProductId = productId;
+	var activeTab = activeSocialSharingServiceId();
+	$('#tabcontent .photo').empty().append(sharingData[productId][activeTab]['imageElement']);
+	$('#shareDescription').text(sharingData[productId][activeTab]['description']);
+	updateShareButton(activeTab, productId);
+	$('#shareText').text(sharingData[productId][activeTab]['shareText']);
+
+	updateSharingDataChoices(productId);
+
+	$.iModal.close();
+}
+
+function updateSharingDataChoices(productId) {
+	$('#SharingDataChoices #productlist').empty();
+	$.each(sharingData, function(index, value) {
+		if (index != productId) {
+			var productAnchor = $("<a/>").attr("href", "javascript:updateSocialSharingPanel("+index+")");
+			productAnchor.append(value[activeSocialSharingServiceId()]['imageElement']);
+			var productListItem = $("<li/>").append(productAnchor);
+			$('#SharingDataChoices #productlist').append(productListItem);
+		}
+	});
+}
+
+/**
+ * View modal overlay of product image choices
+ */
+function showProductChoices() {
+	$.iModal({
+		type: 'inline',
+		inline: '#ChooseAnotherProduct',
+		width: 620,
+		height: 200,
+		title: getLang('ChooseAnotherProduct')
+	});
+
+	updateSharingDataChoices(shareProductId);
+
+	var productCount = objectLength(sharingData);
+	var sharingDataWrapper = $("#SharingDataWrapper");
+	var sharingDataChoices = $("#SharingDataChoices");
+	if (productCount < 6) {
+		sharingDataWrapper.addClass('no-scroll');
+	} else {
+		sharingDataChoices.jCarouselLite({
+			btnNext: ".next",
+			btnPrev: ".prev",
+			visible: 4,
+			scroll: 2,
+			circular: false,
+			speed: 200
+		});
+	}
+
+}
+
+(function($) {
+	if ('undefined' !== typeof $) {
+		$.ajaxSetup({ cache: true });
+	}	
+})($);
+
+
+/* =======================
+   ====== ZOOMIE.JS ======
+   ======================= */
+
+//  jQuery Zoomie 1.2
+//  (c) 2012 Eugen Rochko
+//  jQuery Zoomie may be freely distributed under the MIT license.
+
+(function ($, window, document) {
+  'use strict';
+
+  var defaults = {
+    radius: 100
+  };
+
+  var Zoomie = function (element, options) {
+    this.element = element;
+    this.options = $.extend(defaults, options);
+    this.init();
+  };
+
+  Zoomie.prototype.init = function () {
+    var self = this,
+      fullSrc = this.element.data('full-src'),
+      resizeTimer = undefined;
+    if(!fullSrc) {
+      fullSrc = this.element[0].src;
+    }
+
+    this.containerElement = $('<div>').addClass('zoomie').insertAfter(this.element);
+    this.element.detach().appendTo(this.containerElement);
+
+    this.windowElement = $('<div>').addClass('zoomie-window').css({
+      'background-image': 'url(' + fullSrc + ')',
+      'width': self.options.radius * 2,
+      'height': self.options.radius * 2
+    }).appendTo(this.containerElement);
+
+    this.fullImage        = new Image();
+    this.fullImage.src    = fullSrc;
+
+    $(this.fullImage).on('load', function () {
+      self.ratioX = self.containerElement.innerWidth() / self.fullImage.width;
+      self.ratioY = self.containerElement.innerHeight() / self.fullImage.height;
+
+      self.containerElement.on('mouseenter', function () {
+        self.windowElement.show();
+      });
+
+      self.containerElement.on('mousemove', function (e) {
+        var offset = self.containerElement.offset(),
+          x        = e.pageX - offset.left,
+          y        = e.pageY - offset.top,
+          windowX  = x - self.options.radius,
+          windowY  = y - self.options.radius,
+          imageX   = (((x - self.containerElement.innerWidth()) / self.ratioX) * -1) - self.fullImage.width + self.options.radius,
+          imageY   = (((y - self.containerElement.innerHeight()) / self.ratioY) * -1) - self.fullImage.height + self.options.radius;
+
+        self.windowElement.css({
+          'top':  windowY,
+          'left': windowX,
+          'background-position': imageX + 'px ' + imageY + 'px'
+        });
+
+        if (e.pageX < offset.left || e.pageY < offset.top || x > self.containerElement.innerWidth() || y > self.containerElement.innerHeight()) {
+          // Hide the tool if the mouse is outside of the viewport image coordinates. Can't use the
+          // onmouseleave event because the mouse would always stay in the tool and therefore in
+          // the viewport and the event would never trigger
+          self.windowElement.hide();
+        }
+      });
+
+      $(window).on('resize', function () {
+        // If the window is resized it is possible that the viewport image changed size
+        // so we better calculate the ratios anew
+        if (typeof resizeTimer === "undefined") {
+          // We bubble the resize callback because we don't need it firing every millisecond
+          resizeTimer = setTimeout(function () {
+            resizeTimer = undefined;
+            self.ratioX = self.containerElement.innerWidth() / self.fullImage.width;
+            self.ratioY = self.containerElement.innerHeight() / self.fullImage.height;
+          }, 200);
+        }
+      });
+    });
+  };
+
+  $.fn.zoomie = function (options) {
+    return this.each(function () {
+      if (!$.data(this, 'plugin_zoomie')) {
+        $.data(this, 'plugin_zoomie', new Zoomie($(this), options));
+      }
+    });
+  };
+}(jQuery, window, document));
+
+
+/* ==========================
+   ====== TOUCHWIPE.JS ======
+   ========================== */
+
+/**
+ * jQuery Plugin to obtain touch gestures from iPhone, iPod Touch and iPad, should also work with Android mobile phones (not tested yet!)
+ * Common usage: wipe images (left and right to show the previous or next image)
+ * 
+ * @author Andreas Waltl, netCU Internetagentur (http://www.netcu.de)
+ * @version 1.1.1 (9th December 2010) - fix bug (older IE's had problems)
+ * @version 1.1 (1st September 2010) - support wipe up and wipe down
+ * @version 1.0 (15th July 2010)
+ */
+(function($){$.fn.touchwipe=function(settings){var config={min_move_x:20,min_move_y:20,wipeLeft:function(){},wipeRight:function(){},wipeUp:function(){},wipeDown:function(){},preventDefaultEvents:true};if(settings)$.extend(config,settings);this.each(function(){var startX;var startY;var isMoving=false;function cancelTouch(){this.removeEventListener('touchmove',onTouchMove);startX=null;isMoving=false}function onTouchMove(e){if(config.preventDefaultEvents){e.preventDefault()}if(isMoving){var x=e.touches[0].pageX;var y=e.touches[0].pageY;var dx=startX-x;var dy=startY-y;if(Math.abs(dx)>=config.min_move_x){cancelTouch();if(dx>0){config.wipeLeft()}else{config.wipeRight()}}else if(Math.abs(dy)>=config.min_move_y){cancelTouch();if(dy>0){config.wipeDown()}else{config.wipeUp()}}}}function onTouchStart(e){if(e.touches.length==1){startX=e.touches[0].pageX;startY=e.touches[0].pageY;isMoving=true;this.addEventListener('touchmove',onTouchMove,false)}}if('ontouchstart'in document.documentElement){this.addEventListener('touchstart',onTouchStart,false)}});return this}})(jQuery);
+
+
+/* ========================
+   ====== FITTEXT.JS ======
+   ======================== */
+
+/*global jQuery */
+/*!
+* FitText.js 1.1
+*
+* Copyright 2011, Dave Rupert http://daverupert.com
+* Released under the WTFPL license
+* http://sam.zoy.org/wtfpl/
+*
+* Date: Thu May 05 14:23:00 2011 -0600
+*/
+
+(function( $ ){
+
+  $.fn.fitText = function( kompressor, options ) {
+
+    // Setup options
+    var compressor = kompressor || 1,
+        settings = $.extend({
+          'minFontSize' : Number.NEGATIVE_INFINITY,
+          'maxFontSize' : Number.POSITIVE_INFINITY
+        }, options);
+
+    return this.each(function(){
+
+      // Store the object
+      var $this = $(this);
+
+      // Resizer() resizes items based on the object width divided by the compressor * 10
+      var resizer = function () {
+        $this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
+      };
+
+      // Call once to set.
+      resizer();
+
+      // Call on resize. Opera debounces their resize by default.
+      $(window).on('resize.fittext orientationchange.fittext', resizer);
+
+    });
+
+  };
+
+})( jQuery );
+
+
+/* ==============================
+   ====== FANCYBOX.PACK.JS ======
+   ============================== */
+
+/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */
+(function(r,G,f,v){var J=f("html"),n=f(r),p=f(G),b=f.fancybox=function(){b.open.apply(this,arguments)},I=navigator.userAgent.match(/msie/i),B=null,s=G.createTouch!==v,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},q=function(a){return a&&"string"===f.type(a)},E=function(a){return q(a)&&0<a.indexOf("%")},l=function(a,d){var e=parseInt(a,10)||0;d&&E(a)&&(e*=b.getViewport()[d]/100);return Math.ceil(e)},w=function(a,b){return l(a,b)+"px"};f.extend(b,{version:"2.1.5",defaults:{padding:15,margin:20,
+width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,pixelRatio:1,autoSize:!0,autoHeight:!1,autoWidth:!1,autoResize:!0,autoCenter:!s,fitToView:!0,aspectRatio:!1,topRatio:0.5,leftRatio:0.5,scrolling:"auto",wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},iframe:{scrolling:"auto",preload:!0},swf:{wmode:"transparent",allowfullscreen:"true",allowscriptaccess:"always"},
+keys:{next:{13:"left",34:"up",39:"left",40:"up"},prev:{8:"right",33:"down",37:"right",38:"down"},close:[27],play:[32],toggle:[70]},direction:{next:"left",prev:"right"},scrollOutside:!0,index:0,type:null,href:null,content:null,title:null,tpl:{wrap:'<div class="fancybox-wrap" tabIndex="-1"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen'+
+(I?' allowtransparency="true"':"")+"></iframe>",error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',closeBtn:'<a title="Close" class="fancybox-item fancybox-close" href="javascript:;"></a>',next:'<a title="Next" class="fancybox-nav fancybox-next" href="javascript:;"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev" href="javascript:;"><span></span></a>'},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0,
+openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1,
+isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k,
+c.metadata())):k=c);g=d.href||k.href||(q(c)?c:null);h=d.title!==v?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));q(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":q(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(q(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&&
+k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==v&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current||
+b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer=
+setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index<b.group.length-1))b.player.isActive=!0,p.bind({"onCancel.player beforeClose.player":c,"onUpdate.player":e,"beforeLoad.player":d}),e(),b.trigger("onPlayStart")}else c()},next:function(a){var d=b.current;d&&(q(a)||(a=d.direction.next),b.jumpto(d.index+1,a,"next"))},prev:function(a){var d=b.current;
+d&&(q(a)||(a=d.direction.prev),b.jumpto(d.index-1,a,"prev"))},jumpto:function(a,d,e){var c=b.current;c&&(a=l(a),b.direction=d||c.direction[a>=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==v&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({},e.dim,k)))},update:function(a){var d=
+a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(B),B=null);b.isOpen&&!B&&(B=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),B=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"),b.trigger("onUpdate")),
+b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('<div id="fancybox-loading"><div></div></div>').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked||!1,d={x:n.scrollLeft(),
+y:n.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&r.innerWidth?r.innerWidth:n.width(),d.h=s&&r.innerHeight?r.innerHeight:n.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");n.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(n.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k=e.target||e.srcElement;
+if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1<a.group.length&&k[c]!==v)return b[d](k[c]),e.preventDefault(),!1;if(-1<f.inArray(c,k))return b[d](),e.preventDefault(),!1})}),f.fn.mousewheel&&a.mouseWheel&&b.wrap.bind("mousewheel.fb",function(d,c,k,g){for(var h=f(d.target||null),j=!1;h.length&&!j&&!h.is(".fancybox-skin")&&!h.is(".fancybox-wrap");)j=h[0]&&!(h[0].style.overflow&&"hidden"===h[0].style.overflow)&&
+(h[0].clientWidth&&h[0].scrollWidth>h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1<b.group.length&&!a.canShrink){if(0<g||0<k)b.prev(0<g?"down":"left");else if(0>g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&&b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,
+{},b.helpers[d].defaults,e),c)});p.trigger(a)}},isImage:function(a){return q(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return q(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,
+mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=
+!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,w(d.padding[a]))});b.trigger("onReady");if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");
+"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width=this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=
+this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);
+f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,
+e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents();e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,
+outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("<div>").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('<div class="fancybox-placeholder"></div>').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder",!1)}));break;case "image":e=a.tpl.image.replace("{href}",
+g);break;case "swf":e='<object id="fancybox-swf" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="movie" value="'+g+'"></param>',h="",f.each(a.swf,function(a,b){e+='<param name="'+a+'" value="'+b+'"></param>';h+=" "+a+'="'+b+'"'}),e+='<embed src="'+g+'" type="application/x-shockwave-flash" width="100%" height="100%"'+h+"></embed></object>"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow");a.inner.css("overflow","yes"===k?"scroll":
+"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth,p=h.maxHeight,s=h.scrolling,q=h.scrollOutside?
+h.scrollbarWidth:0,x=h.margin,y=l(x[1]+x[3]),r=l(x[0]+x[2]),v,z,t,C,A,F,B,D,H;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");x=l(k.outerWidth(!0)-k.width());v=l(k.outerHeight(!0)-k.height());z=y+x;t=r+v;C=E(c)?(a.w-z)*l(c)/100:c;A=E(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(H=h.content,h.autoHeight&&1===H.data("ready"))try{H[0].contentWindow.document.location&&(g.width(C).height(9999),F=H.contents().find("body"),q&&F.css("overflow-x","hidden"),A=F.outerHeight(!0))}catch(G){}}else if(h.autoWidth||
+h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(C),h.autoHeight||g.height(A),h.autoWidth&&(C=g.width()),h.autoHeight&&(A=g.height()),g.removeClass("fancybox-tmp");c=l(C);j=l(A);D=C/A;m=l(E(m)?l(m,"w")-z:m);n=l(E(n)?l(n,"w")-z:n);u=l(E(u)?l(u,"h")-t:u);p=l(E(p)?l(p,"h")-t:p);F=n;B=p;h.fitToView&&(n=Math.min(a.w-z,n),p=Math.min(a.h-t,p));z=a.w-y;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/D)),j>p&&(j=p,c=l(j*D)),c<m&&(c=m,j=l(c/D)),j<u&&(j=u,c=l(j*D))):(c=Math.max(m,Math.min(c,n)),h.autoHeight&&
+"iframe"!==h.type&&(g.width(c),j=g.height()),j=Math.max(u,Math.min(j,p)));if(h.fitToView)if(g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height(),h.aspectRatio)for(;(a>z||y>r)&&(c>m&&j>u)&&!(19<d++);)j=Math.max(u,Math.min(p,j-10)),c=l(j*D),c<m&&(c=m,j=l(c/D)),c>n&&(c=n,j=l(c/D)),g.width(c).height(j),e.width(c+x),a=e.width(),y=e.height();else c=Math.max(m,Math.min(c,c-(a-z))),j=Math.max(u,Math.min(j,j-(y-r)));q&&("auto"===s&&j<A&&c+x+q<z)&&(c+=q);g.width(c).height(j);e.width(c+x);a=e.width();
+y=e.height();e=(a>z||y>r)&&c>m&&j>u;c=h.aspectRatio?c<F&&j<B&&c<C&&j<A:(c<F||j<B)&&(c<C||j<A);f.extend(h,{dim:{width:w(a),height:w(y)},origWidth:C,origHeight:A,canShrink:e,canExpand:c,wPadding:x,hPadding:v,wrapSpace:y-k.outerHeight(!0),skinSpace:k.height()-j});!H&&(h.autoHeight&&j>u&&j<p&&!c)&&g.height("auto")},_getPosition:function(a){var d=b.current,e=b.getViewport(),c=d.margin,f=b.wrap.width()+c[1]+c[3],g=b.wrap.height()+c[0]+c[2],c={position:"absolute",top:c[0],left:c[3]};d.autoCenter&&d.fixed&&
+!a&&g<=e.h&&f<=e.w?c.position="fixed":d.locked||(c.top+=e.y,c.left+=e.x);c.top=w(Math.max(c.top,c.top+(e.h-g)*d.topRatio));c.left=w(Math.max(c.left,c.left+(e.w-f)*d.leftRatio));return c},_afterZoomIn:function(){var a=b.current;a&&(b.isOpen=b.isOpened=!0,b.wrap.css("overflow","visible").addClass("fancybox-opened"),b.update(),(a.closeClick||a.nextClick&&1<b.group.length)&&b.inner.css("cursor","pointer").bind("click.fb",function(d){!f(d.target).is("a")&&!f(d.target).parent().is("a")&&(d.preventDefault(),
+b[a.closeClick?"close":"next"]())}),a.closeBtn&&f(a.tpl.closeBtn).appendTo(b.skin).bind("click.fb",function(a){a.preventDefault();b.close()}),a.arrows&&1<b.group.length&&((a.loop||0<a.index)&&f(a.tpl.prev).appendTo(b.outer).bind("click.fb",b.prev),(a.loop||a.index<b.group.length-1)&&f(a.tpl.next).appendTo(b.outer).bind("click.fb",b.next)),b.trigger("afterShow"),!a.loop&&a.index===a.group.length-1?b.play(!1):b.opts.autoPlay&&!b.player.isActive&&(b.opts.autoPlay=!1,b.play()))},_afterZoomOut:function(a){a=
+a||b.current;f(".fancybox-wrap").trigger("onReset").remove();f.extend(b,{group:{},opts:{},router:!1,current:null,isActive:!1,isOpened:!1,isOpen:!1,isClosing:!1,wrap:null,skin:null,outer:null,inner:null});b.trigger("afterClose",a)}});b.transitions={getOrigPosition:function(){var a=b.current,d=a.element,e=a.orig,c={},f=50,g=50,h=a.hPadding,j=a.wPadding,m=b.getViewport();!e&&(a.isDom&&d.is(":visible"))&&(e=d.find("img:first"),e.length||(e=d));t(e)?(c=e.offset(),e.is("img")&&(f=e.outerWidth(),g=e.outerHeight())):
+(c.top=m.y+(m.h-g)*a.topRatio,c.left=m.x+(m.w-f)*a.leftRatio);if("fixed"===b.wrap.css("position")||a.locked)c.top-=m.y,c.left-=m.x;return c={top:w(c.top-h*a.topRatio),left:w(c.left-j*a.leftRatio),width:w(f+j),height:w(g+h)}},step:function(a,d){var e,c,f=d.prop;c=b.current;var g=c.wrapSpace,h=c.skinSpace;if("width"===f||"height"===f)e=d.end===d.start?1:(a-d.start)/(d.end-d.start),b.isClosing&&(e=1-e),c="width"===f?c.wPadding:c.hPadding,c=a-c,b.skin[f](l("width"===f?c:c-g*e)),b.inner[f](l("width"===
+f?c:c-g*e-h*e))},zoomIn:function(){var a=b.current,d=a.pos,e=a.openEffect,c="elastic"===e,k=f.extend({opacity:1},d);delete k.position;c?(d=this.getOrigPosition(),a.openOpacity&&(d.opacity=0.1)):"fade"===e&&(d.opacity=0.1);b.wrap.css(d).animate(k,{duration:"none"===e?0:a.openSpeed,easing:a.openEasing,step:c?this.step:null,complete:b._afterZoomIn})},zoomOut:function(){var a=b.current,d=a.closeEffect,e="elastic"===d,c={opacity:0.1};e&&(c=this.getOrigPosition(),a.closeOpacity&&(c.opacity=0.1));b.wrap.animate(c,
+{duration:"none"===d?0:a.closeSpeed,easing:a.closeEasing,step:e?this.step:null,complete:b._afterZoomOut})},changeIn:function(){var a=b.current,d=a.nextEffect,e=a.pos,c={opacity:1},f=b.direction,g;e.opacity=0.1;"elastic"===d&&(g="down"===f||"up"===f?"top":"left","down"===f||"right"===f?(e[g]=w(l(e[g])-200),c[g]="+=200px"):(e[g]=w(l(e[g])+200),c[g]="-=200px"));"none"===d?b._afterZoomIn():b.wrap.css(e).animate(c,{duration:a.nextSpeed,easing:a.nextEasing,complete:b._afterZoomIn})},changeOut:function(){var a=
+b.previous,d=a.prevEffect,e={opacity:0.1},c=b.direction;"elastic"===d&&(e["down"===c||"up"===c?"top":"left"]=("up"===c||"left"===c?"-":"+")+"=200px");a.wrap.animate(e,{duration:"none"===d?0:a.prevSpeed,easing:a.prevEasing,complete:function(){f(this).trigger("onReset").remove()}})}};b.helpers.overlay={defaults:{closeClick:!0,speedOut:200,showEarly:!0,css:{},locked:!s,fixed:!0},overlay:null,fixed:!1,el:f("html"),create:function(a){a=f.extend({},this.defaults,a);this.overlay&&this.close();this.overlay=
+f('<div class="fancybox-overlay"></div>').appendTo(b.coming?b.coming.parent:a.parent);this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(n.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?
+b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){var a,b;n.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),a=n.scrollTop(),b=n.scrollLeft(),this.el.removeClass("fancybox-lock"),n.scrollTop(a).scrollLeft(b));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%");I?(b=Math.max(G.documentElement.offsetWidth,G.body.offsetWidth),
+p.width()>b&&(a=p.width())):p.width()>n.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&(this.fixed&&b.fixed)&&(e||(this.margin=p.height()>n.height()?f("html").css("margin-right").replace("px",""):!1),b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){var e,c;b.locked&&(!1!==this.margin&&(f("*").filter(function(){return"fixed"===
+f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin")),e=n.scrollTop(),c=n.scrollLeft(),this.el.addClass("fancybox-lock"),n.scrollTop(e).scrollLeft(c));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=
+b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(q(e)&&""!==f.trim(e)){d=f('<div class="fancybox-title fancybox-title-'+c+'-wrap">'+e+"</div>");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),I&&d.width(d.width()),d.wrapInner('<span class="child"></span>'),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,
+e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):p.undelegate(c,"click.fb-start").delegate(c+
+":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===v&&(f.scrollbarWidth=function(){var a=f('<div style="width:50px;height:50px;overflow:auto"><div/></div>').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===v){a=f.support;d=f('<div style="position:fixed;top:20px;"></div>').appendTo("body");var e=20===
+d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(r).width();J.addClass("fancybox-lock-test");d=f(r).width();J.removeClass("fancybox-lock-test");f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);
+
+/* ================================
+   ====== FANCYBOX.THUMBS.JS ======
+   ================================ */
+
+ /*!
+ * Thumbnail helper for fancyBox
+ * version: 1.0.7 (Mon, 01 Oct 2012)
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ *     $(".fancybox").fancybox({
+ *         helpers : {
+ *             thumbs: {
+ *                 width  : 50,
+ *                 height : 50
+ *             }
+ *         }
+ *     });
+ *
+ */
+(function ($) {
+	//Shortcut for fancyBox object
+	var F = $.fancybox;
+
+	//Add helper object
+	F.helpers.thumbs = {
+		defaults : {
+			width    : 50,       // thumbnail width
+			height   : 50,       // thumbnail height
+			position : 'bottom', // 'top' or 'bottom'
+			source   : function ( item ) {  // function to obtain the URL of the thumbnail image
+				var href;
+
+				if (item.element) {
+					href = $(item.element).find('img').attr('src');
+				}
+
+				if (!href && item.type === 'image' && item.href) {
+					href = item.href;
+				}
+
+				return href;
+			}
+		},
+
+		wrap  : null,
+		list  : null,
+		width : 0,
+
+		init: function (opts, obj) {
+			var that = this,
+				list,
+				thumbWidth  = opts.width,
+				thumbHeight = opts.height,
+				thumbSource = opts.source;
+
+			//Build list structure
+			list = '';
+
+			for (var n = 0; n < obj.group.length; n++) {
+				list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
+			}
+
+			this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position).appendTo('body');
+			this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
+
+			//Load each thumbnail
+			$.each(obj.group, function (i) {
+				var href = thumbSource( obj.group[ i ] );
+
+				if (!href) {
+					return;
+				}
+
+				$("<img />").load(function () {
+					var width  = this.width,
+						height = this.height,
+						widthRatio, heightRatio, parent;
+
+					if (!that.list || !width || !height) {
+						return;
+					}
+
+					//Calculate thumbnail width/height and center it
+					widthRatio  = width / thumbWidth;
+					heightRatio = height / thumbHeight;
+
+					parent = that.list.children().eq(i).find('a');
+
+					if (widthRatio >= 1 && heightRatio >= 1) {
+						if (widthRatio > heightRatio) {
+							width  = Math.floor(width / heightRatio);
+							height = thumbHeight;
+
+						} else {
+							width  = thumbWidth;
+							height = Math.floor(height / widthRatio);
+						}
+					}
+
+					$(this).css({
+						width  : width,
+						height : height,
+						top    : Math.floor(thumbHeight / 2 - height / 2),
+						left   : Math.floor(thumbWidth / 2 - width / 2)
+					});
+
+					parent.width(thumbWidth).height(thumbHeight);
+
+					$(this).hide().appendTo(parent).fadeIn(300);
+
+				}).attr('src', href);
+			});
+
+			//Set initial width
+			this.width = this.list.children().eq(0).outerWidth(true);
+
+			this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)));
+		},
+
+		beforeLoad: function (opts, obj) {
+			//Remove self if gallery do not have at least two items
+			if (obj.group.length < 2) {
+				obj.helpers.thumbs = false;
+
+				return;
+			}
+
+			//Increase bottom margin to give space for thumbs
+			obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15);
+		},
+
+		afterShow: function (opts, obj) {
+			//Check if exists and create or update list
+			if (this.list) {
+				this.onUpdate(opts, obj);
+
+			} else {
+				this.init(opts, obj);
+			}
+
+			//Set active element
+			this.list.children().removeClass('active').eq(obj.index).addClass('active');
+		},
+
+		//Center list
+		onUpdate: function (opts, obj) {
+			if (this.list) {
+				this.list.stop(true).animate({
+					'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))
+				}, 150);
+			}
+		},
+
+		beforeClose: function () {
+			if (this.wrap) {
+				this.wrap.remove();
+			}
+
+			this.wrap  = null;
+			this.list  = null;
+			this.width = 0;
+		}
+	}
+
+}(jQuery));
+
+
+/* ================================
+   ====== JQUERY.VALIDATE.JS ======
+   ================================ */
+
+/**
+ * jQuery Validation Plugin 1.8.1
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
+ * http://docs.jquery.com/Plugins/Validation
+ *
+ * Copyright (c) 2006 - 2011 Jörn Zaefferer
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ */
+
+(function($) {
+
+$.extend($.fn, {
+	// http://docs.jquery.com/Plugins/Validation/validate
+	validate: function( options ) {
+
+		// if nothing is selected, return nothing; can't chain anyway
+		if (!this.length) {
+			options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
+			return;
+		}
+
+		// check if a validator for this form was already created
+		var validator = $.data(this[0], 'validator');
+		if ( validator ) {
+			return validator;
+		}
+
+		validator = new $.validator( options, this[0] );
+		$.data(this[0], 'validator', validator);
+
+		if ( validator.settings.onsubmit ) {
+
+			// allow suppresing validation by adding a cancel class to the submit button
+			this.find("input, button").filter(".cancel").click(function() {
+				validator.cancelSubmit = true;
+			});
+
+			// when a submitHandler is used, capture the submitting button
+			if (validator.settings.submitHandler) {
+				this.find("input, button").filter(":submit").click(function() {
+					validator.submitButton = this;
+				});
+			}
+
+			// validate the form on submit
+			this.submit( function( event ) {
+				if ( validator.settings.debug )
+					// prevent form submit to be able to see console output
+					event.preventDefault();
+
+				function handle() {
+					if ( validator.settings.submitHandler ) {
+						if (validator.submitButton) {
+							// insert a hidden input as a replacement for the missing submit button
+							var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
+						}
+						validator.settings.submitHandler.call( validator, validator.currentForm );
+						if (validator.submitButton) {
+							// and clean up afterwards; thanks to no-block-scope, hidden can be referenced
+							hidden.remove();
+						}
+						return false;
+					}
+					return true;
+				}
+
+				// prevent submit for invalid forms or custom submit handlers
+				if ( validator.cancelSubmit ) {
+					validator.cancelSubmit = false;
+					return handle();
+				}
+				if ( validator.form() ) {
+					if ( validator.pendingRequest ) {
+						validator.formSubmitted = true;
+						return false;
+					}
+					return handle();
+				} else {
+					validator.focusInvalid();
+					return false;
+				}
+			});
+		}
+
+		return validator;
+	},
+	// http://docs.jquery.com/Plugins/Validation/valid
+	valid: function() {
+        if ( $(this[0]).is('form')) {
+            return this.validate().form();
+        } else {
+            var valid = true;
+            var validator = $(this[0].form).validate();
+            this.each(function() {
+				valid &= validator.element(this);
+            });
+            return valid;
+        }
+    },
+	// attributes: space seperated list of attributes to retrieve and remove
+	removeAttrs: function(attributes) {
+		var result = {},
+			$element = this;
+		$.each(attributes.split(/\s/), function(index, value) {
+			result[value] = $element.attr(value);
+			$element.removeAttr(value);
+		});
+		return result;
+	},
+	// http://docs.jquery.com/Plugins/Validation/rules
+	rules: function(command, argument) {
+		var element = this[0];
+
+		if (command) var settings = $.data(element.form, 'validator');
+
+		if (command && typeof settings !== 'undefined') {
+			settings = settings.settings;
+
+			var staticRules = settings.rules;
+			var existingRules = $.validator.staticRules(element);
+			switch(command) {
+			case "add":
+				$.extend(existingRules, $.validator.normalizeRule(argument));
+				staticRules[element.name] = existingRules;
+				if (argument.messages)
+					settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
+				break;
+			case "remove":
+				if (!argument) {
+					delete staticRules[element.name];
+					return existingRules;
+				}
+				var filtered = {};
+				$.each(argument.split(/\s/), function(index, method) {
+					filtered[method] = existingRules[method];
+					delete existingRules[method];
+				});
+				return filtered;
+			}
+		}
+
+		var data = $.validator.normalizeRules(
+		$.extend(
+			{},
+			$.validator.metadataRules(element),
+			$.validator.classRules(element),
+			$.validator.attributeRules(element),
+			$.validator.staticRules(element)
+		), element);
+
+		// make sure required is at front
+		if (data.required) {
+			var param = data.required;
+			delete data.required;
+			data = $.extend({required: param}, data);
+		}
+
+		return data;
+	}
+});
+
+// Custom selectors
+$.extend($.expr[":"], {
+	// http://docs.jquery.com/Plugins/Validation/blank
+	blank: function(a) {return !$.trim("" + a.value);},
+	// http://docs.jquery.com/Plugins/Validation/filled
+	filled: function(a) {return !!$.trim("" + a.value);},
+	// http://docs.jquery.com/Plugins/Validation/unchecked
+	unchecked: function(a) {return !a.checked;}
+});
+
+// constructor for validator
+$.validator = function( options, form ) {
+	this.settings = $.extend( true, {}, $.validator.defaults, options );
+	this.currentForm = form;
+	this.init();
+};
+
+$.validator.format = function(source, params) {
+	if ( arguments.length == 1 )
+		return function() {
+			var args = $.makeArray(arguments);
+			args.unshift(source);
+			return $.validator.format.apply( this, args );
+		};
+	if ( arguments.length > 2 && params.constructor != Array  ) {
+		params = $.makeArray(arguments).slice(1);
+	}
+	if ( params.constructor != Array ) {
+		params = [ params ];
+	}
+	$.each(params, function(i, n) {
+		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
+	});
+	return source;
+};
+
+$.extend($.validator, {
+
+	defaults: {
+		messages: {},
+		groups: {},
+		rules: {},
+		errorClass: "error",
+		validClass: "valid",
+		errorElement: "label",
+		focusInvalid: true,
+		errorContainer: $( [] ),
+		errorLabelContainer: $( [] ),
+		onsubmit: true,
+		ignore: [],
+		ignoreTitle: false,
+		onfocusin: function(element) {
+			this.lastActive = element;
+
+			// hide error label and remove error class on focus if enabled
+			if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
+				this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
+				this.addWrapper(this.errorsFor(element)).hide();
+			}
+		},
+		onfocusout: function(element) {
+			if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
+				this.element(element);
+			}
+		},
+		onkeyup: function(element) {
+			if ( element.name in this.submitted || element == this.lastElement ) {
+				this.element(element);
+			}
+		},
+		onclick: function(element) {
+			// click on selects, radiobuttons and checkboxes
+			if ( element.name in this.submitted )
+				this.element(element);
+			// or option elements, check parent select in that case
+			else if (element.parentNode.name in this.submitted)
+				this.element(element.parentNode);
+		},
+		highlight: function(element, errorClass, validClass) {
+			if (element.type === 'radio') {
+				this.findByName(element.name).addClass(errorClass).removeClass(validClass);
+			} else {
+				$(element).addClass(errorClass).removeClass(validClass);
+			}
+		},
+		unhighlight: function(element, errorClass, validClass) {
+			if (element.type === 'radio') {
+				this.findByName(element.name).removeClass(errorClass).addClass(validClass);
+			} else {
+				$(element).removeClass(errorClass).addClass(validClass);
+			}
+		}
+	},
+
+	// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
+	setDefaults: function(settings) {
+		$.extend( $.validator.defaults, settings );
+	},
+
+	messages: {
+		required: "This field is required.",
+		remote: "Please fix this field.",
+		email: "Please enter a valid email address.",
+		url: "Please enter a valid URL.",
+		date: "Please enter a valid date.",
+		dateISO: "Please enter a valid date (ISO).",
+		number: "Please enter a valid number.",
+		digits: "Please enter only digits.",
+		creditcard: "Please enter a valid credit card number.",
+		equalTo: "Please enter the same value again.",
+		accept: "Please enter a value with a valid extension.",
+		maxlength: $.validator.format("Please enter no more than {0} characters."),
+		minlength: $.validator.format("Please enter at least {0} characters."),
+		rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
+		range: $.validator.format("Please enter a value between {0} and {1}."),
+		max: $.validator.format("Please enter a value less than or equal to {0}."),
+		min: $.validator.format("Please enter a value greater than or equal to {0}.")
+	},
+
+	autoCreateRanges: false,
+
+	prototype: {
+
+		init: function() {
+			this.labelContainer = $(this.settings.errorLabelContainer);
+			this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
+			this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
+			this.submitted = {};
+			this.valueCache = {};
+			this.pendingRequest = 0;
+			this.pending = {};
+			this.invalid = {};
+			this.reset();
+
+			var groups = (this.groups = {});
+			$.each(this.settings.groups, function(key, value) {
+				$.each(value.split(/\s/), function(index, name) {
+					groups[name] = key;
+				});
+			});
+			var rules = this.settings.rules;
+			$.each(rules, function(key, value) {
+				rules[key] = $.validator.normalizeRule(value);
+			});
+
+			function delegate(event) {
+				var validator = $.data(this[0].form, "validator"),
+					eventType = "on" + event.type.replace(/^validate/, "");
+				validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
+			}
+			$(this.currentForm)
+				.validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
+				.validateDelegate(":radio, :checkbox, select, option", "click", delegate);
+
+			if (this.settings.invalidHandler)
+				$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Validator/form
+		form: function() {
+			this.checkForm();
+			$.extend(this.submitted, this.errorMap);
+			this.invalid = $.extend({}, this.errorMap);
+			if (!this.valid())
+				$(this.currentForm).triggerHandler("invalid-form", [this]);
+			this.showErrors();
+			return this.valid();
+		},
+
+		checkForm: function() {
+			this.prepareForm();
+			for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
+				this.check( elements[i] );
+			}
+			return this.valid();
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Validator/element
+		element: function( element ) {
+			element = this.clean( element );
+			this.lastElement = element;
+			this.prepareElement( element );
+			this.currentElements = $(element);
+			var result = this.check( element );
+			if ( result ) {
+				delete this.invalid[element.name];
+			} else {
+				this.invalid[element.name] = true;
+			}
+			if ( !this.numberOfInvalids() ) {
+				// Hide error containers on last error
+				this.toHide = this.toHide.add( this.containers );
+			}
+			this.showErrors();
+			return result;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
+		showErrors: function(errors) {
+			if(errors) {
+				// add items to error list and map
+				$.extend( this.errorMap, errors );
+				this.errorList = [];
+				for ( var name in errors ) {
+					this.errorList.push({
+						message: errors[name],
+						element: this.findByName(name)[0]
+					});
+				}
+				// remove items from success list
+				this.successList = $.grep( this.successList, function(element) {
+					return !(element.name in errors);
+				});
+			}
+			this.settings.showErrors
+				? this.settings.showErrors.call( this, this.errorMap, this.errorList )
+				: this.defaultShowErrors();
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
+		resetForm: function() {
+			if ( $.fn.resetForm )
+				$( this.currentForm ).resetForm();
+			this.submitted = {};
+			this.prepareForm();
+			this.hideErrors();
+			this.elements().removeClass( this.settings.errorClass );
+		},
+
+		numberOfInvalids: function() {
+			return this.objectLength(this.invalid);
+		},
+
+		objectLength: function( obj ) {
+			var count = 0;
+			for ( var i in obj )
+				count++;
+			return count;
+		},
+
+		hideErrors: function() {
+			this.addWrapper( this.toHide ).hide();
+		},
+
+		valid: function() {
+			return this.size() == 0;
+		},
+
+		size: function() {
+			return this.errorList.length;
+		},
+
+		focusInvalid: function() {
+			if( this.settings.focusInvalid ) {
+				try {
+					$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
+					.filter(":visible")
+					.focus()
+					// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
+					.trigger("focusin");
+				} catch(e) {
+					// ignore IE throwing errors when focusing hidden elements
+				}
+			}
+		},
+
+		findLastActive: function() {
+			var lastActive = this.lastActive;
+			return lastActive && $.grep(this.errorList, function(n) {
+				return n.element.name == lastActive.name;
+			}).length == 1 && lastActive;
+		},
+
+		elements: function() {
+			var validator = this,
+				rulesCache = {};
+
+			// select all valid inputs inside the form (no submit or reset buttons)
+			return $(this.currentForm)
+			.find("input, select, textarea")
+			.not(":submit, :reset, :image, [disabled]")
+			.not( this.settings.ignore )
+			.filter(function() {
+				!this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
+
+				// select only the first element for each name, and only those with rules specified
+				if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
+					return false;
+
+				rulesCache[this.name] = true;
+				return true;
+			});
+		},
+
+		clean: function( selector ) {
+			return $( selector )[0];
+		},
+
+		errors: function() {
+			return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
+		},
+
+		reset: function() {
+			this.successList = [];
+			this.errorList = [];
+			this.errorMap = {};
+			this.toShow = $([]);
+			this.toHide = $([]);
+			this.currentElements = $([]);
+		},
+
+		prepareForm: function() {
+			this.reset();
+			this.toHide = this.errors().add( this.containers );
+		},
+
+		prepareElement: function( element ) {
+			this.reset();
+			this.toHide = this.errorsFor(element);
+		},
+
+		check: function( element ) {
+			element = this.clean( element );
+
+			// if radio/checkbox, validate first element in group instead
+			if (this.checkable(element)) {
+				element = this.findByName( element.name ).not(this.settings.ignore)[0];
+			}
+
+			var rules = $(element).rules();
+			var dependencyMismatch = false;
+			for (var method in rules ) {
+				var rule = { method: method, parameters: rules[method] };
+				try {
+					var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
+
+					// if a method indicates that the field is optional and therefore valid,
+					// don't mark it as valid when there are no other rules
+					if ( result == "dependency-mismatch" ) {
+						dependencyMismatch = true;
+						continue;
+					}
+					dependencyMismatch = false;
+
+					if ( result == "pending" ) {
+						this.toHide = this.toHide.not( this.errorsFor(element) );
+						return;
+					}
+
+					if( !result ) {
+						this.formatAndAdd( element, rule );
+						return false;
+					}
+				} catch(e) {
+					this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
+						 + ", check the '" + rule.method + "' method", e);
+					throw e;
+				}
+			}
+			if (dependencyMismatch)
+				return;
+			if ( this.objectLength(rules) )
+				this.successList.push(element);
+			return true;
+		},
+
+		// return the custom message for the given element and validation method
+		// specified in the element's "messages" metadata
+		customMetaMessage: function(element, method) {
+			if (!$.metadata)
+				return;
+
+			var meta = this.settings.meta
+				? $(element).metadata()[this.settings.meta]
+				: $(element).metadata();
+
+			return meta && meta.messages && meta.messages[method];
+		},
+
+		// return the custom message for the given element name and validation method
+		customMessage: function( name, method ) {
+			var m = this.settings.messages[name];
+			return m && (m.constructor == String
+				? m
+				: m[method]);
+		},
+
+		// return the first defined argument, allowing empty strings
+		findDefined: function() {
+			for(var i = 0; i < arguments.length; i++) {
+				if (arguments[i] !== undefined)
+					return arguments[i];
+			}
+			return undefined;
+		},
+
+		defaultMessage: function( element, method) {
+			return this.findDefined(
+				this.customMessage( element.name, method ),
+				this.customMetaMessage( element, method ),
+				// title is never undefined, so handle empty string as undefined
+				!this.settings.ignoreTitle && element.title || undefined,
+				$.validator.messages[method],
+				"<strong>Warning: No message defined for " + element.name + "</strong>"
+			);
+		},
+
+		formatAndAdd: function( element, rule ) {
+			var message = this.defaultMessage( element, rule.method ),
+				theregex = /\$?\{(\d+)\}/g;
+			if ( typeof message == "function" ) {
+				message = message.call(this, rule.parameters, element);
+			} else if (theregex.test(message)) {
+				message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
+			}
+			this.errorList.push({
+				message: message,
+				element: element
+			});
+
+			this.errorMap[element.name] = message;
+			this.submitted[element.name] = message;
+		},
+
+		addWrapper: function(toToggle) {
+			if ( this.settings.wrapper )
+				toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
+			return toToggle;
+		},
+
+		defaultShowErrors: function() {
+			for ( var i = 0; this.errorList[i]; i++ ) {
+				var error = this.errorList[i];
+				this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
+				this.showLabel( error.element, error.message );
+			}
+			if( this.errorList.length ) {
+				this.toShow = this.toShow.add( this.containers );
+			}
+			if (this.settings.success) {
+				for ( var i = 0; this.successList[i]; i++ ) {
+					this.showLabel( this.successList[i] );
+				}
+			}
+			if (this.settings.unhighlight) {
+				for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
+					this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
+				}
+			}
+			this.toHide = this.toHide.not( this.toShow );
+			this.hideErrors();
+			this.addWrapper( this.toShow ).show();
+		},
+
+		validElements: function() {
+			return this.currentElements.not(this.invalidElements());
+		},
+
+		invalidElements: function() {
+			return $(this.errorList).map(function() {
+				return this.element;
+			});
+		},
+
+		showLabel: function(element, message) {
+			var label = this.errorsFor( element );
+			if ( label.length ) {
+				// refresh error/success class
+				label.removeClass().addClass( this.settings.errorClass );
+
+				// check if we have a generated label, replace the message then
+				label.attr("generated") && label.html(message);
+			} else {
+				// create label
+				label = $("<" + this.settings.errorElement + "/>")
+					.attr({"for":  this.idOrName(element), generated: true})
+					.addClass(this.settings.errorClass)
+					.html(message || "");
+				if ( this.settings.wrapper ) {
+					// make sure the element is visible, even in IE
+					// actually showing the wrapped element is handled elsewhere
+					label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
+				}
+				if ( !this.labelContainer.append(label).length )
+					this.settings.errorPlacement
+						? this.settings.errorPlacement(label, $(element) )
+						: label.insertAfter(element);
+			}
+			if ( !message && this.settings.success ) {
+				label.text("");
+				typeof this.settings.success == "string"
+					? label.addClass( this.settings.success )
+					: this.settings.success( label );
+			}
+			this.toShow = this.toShow.add(label);
+		},
+
+		errorsFor: function(element) {
+			var name = this.idOrName(element);
+    		return this.errors().filter(function() {
+				return $(this).attr('for') == name;
+			});
+		},
+
+		idOrName: function(element) {
+			return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
+		},
+
+		checkable: function( element ) {
+			return /radio|checkbox/i.test(element.type);
+		},
+
+		findByName: function( name ) {
+			// select by name and filter by form for performance over form.find("[name=...]")
+			var form = this.currentForm;
+			return $(document.getElementsByName(name)).map(function(index, element) {
+				return element.form == form && element.name == name && element  || null;
+			});
+		},
+
+		getLength: function(value, element) {
+			switch( element.nodeName.toLowerCase() ) {
+			case 'select':
+				return $("option:selected", element).length;
+			case 'input':
+				if( this.checkable( element) )
+					return this.findByName(element.name).filter(':checked').length;
+			}
+			return value.length;
+		},
+
+		depend: function(param, element) {
+			return this.dependTypes[typeof param]
+				? this.dependTypes[typeof param](param, element)
+				: true;
+		},
+
+		dependTypes: {
+			"boolean": function(param, element) {
+				return param;
+			},
+			"string": function(param, element) {
+				return !!$(param, element.form).length;
+			},
+			"function": function(param, element) {
+				return param(element);
+			}
+		},
+
+		optional: function(element) {
+			return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
+		},
+
+		startRequest: function(element) {
+			if (!this.pending[element.name]) {
+				this.pendingRequest++;
+				this.pending[element.name] = true;
+			}
+		},
+
+		stopRequest: function(element, valid) {
+			this.pendingRequest--;
+			// sometimes synchronization fails, make sure pendingRequest is never < 0
+			if (this.pendingRequest < 0)
+				this.pendingRequest = 0;
+			delete this.pending[element.name];
+			if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
+				$(this.currentForm).submit();
+				this.formSubmitted = false;
+			} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
+				$(this.currentForm).triggerHandler("invalid-form", [this]);
+				this.formSubmitted = false;
+			}
+		},
+
+		previousValue: function(element) {
+			return $.data(element, "previousValue") || $.data(element, "previousValue", {
+				old: null,
+				valid: true,
+				message: this.defaultMessage( element, "remote" )
+			});
+		}
+
+	},
+
+	classRuleSettings: {
+		required: {required: true},
+		email: {email: true},
+		url: {url: true},
+		date: {date: true},
+		dateISO: {dateISO: true},
+		dateDE: {dateDE: true},
+		number: {number: true},
+		numberDE: {numberDE: true},
+		digits: {digits: true},
+		creditcard: {creditcard: true}
+	},
+
+	addClassRules: function(className, rules) {
+		className.constructor == String ?
+			this.classRuleSettings[className] = rules :
+			$.extend(this.classRuleSettings, className);
+	},
+
+	classRules: function(element) {
+		var rules = {};
+		var classes = $(element).attr('class');
+		classes && $.each(classes.split(' '), function() {
+			if (this in $.validator.classRuleSettings) {
+				$.extend(rules, $.validator.classRuleSettings[this]);
+			}
+		});
+		return rules;
+	},
+
+	attributeRules: function(element) {
+		var rules = {};
+		var $element = $(element);
+
+		for (var method in $.validator.methods) {
+			var value = $element.attr(method);
+			if (value) {
+				rules[method] = value;
+			}
+		}
+
+		// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
+		if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
+			delete rules.maxlength;
+		}
+
+		return rules;
+	},
+
+	metadataRules: function(element) {
+		if (!$.metadata) return {};
+
+		var meta = $.data(element.form, 'validator').settings.meta;
+		return meta ?
+			$(element).metadata()[meta] :
+			$(element).metadata();
+	},
+
+	staticRules: function(element) {
+		var rules = {};
+		var validator = $.data(element.form, 'validator');
+		if (typeof validator !== 'undefined' && validator.settings.rules) {
+			rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
+		}
+		return rules;
+	},
+
+	normalizeRules: function(rules, element) {
+		// handle dependency check
+		$.each(rules, function(prop, val) {
+			// ignore rule when param is explicitly false, eg. required:false
+			if (val === false) {
+				delete rules[prop];
+				return;
+			}
+			if (val.param || val.depends) {
+				var keepRule = true;
+				switch (typeof val.depends) {
+					case "string":
+						keepRule = !!$(val.depends, element.form).length;
+						break;
+					case "function":
+						keepRule = val.depends.call(element, element);
+						break;
+				}
+				if (keepRule) {
+					rules[prop] = val.param !== undefined ? val.param : true;
+				} else {
+					delete rules[prop];
+				}
+			}
+		});
+
+		// evaluate parameters
+		$.each(rules, function(rule, parameter) {
+			rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
+		});
+
+		// clean number parameters
+		$.each(['minlength', 'maxlength', 'min', 'max'], function() {
+			if (rules[this]) {
+				rules[this] = Number(rules[this]);
+			}
+		});
+		$.each(['rangelength', 'range'], function() {
+			if (rules[this]) {
+				rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
+			}
+		});
+
+		if ($.validator.autoCreateRanges) {
+			// auto-create ranges
+			if (rules.min && rules.max) {
+				rules.range = [rules.min, rules.max];
+				delete rules.min;
+				delete rules.max;
+			}
+			if (rules.minlength && rules.maxlength) {
+				rules.rangelength = [rules.minlength, rules.maxlength];
+				delete rules.minlength;
+				delete rules.maxlength;
+			}
+		}
+
+		// To support custom messages in metadata ignore rule methods titled "messages"
+		if (rules.messages) {
+			delete rules.messages;
+		}
+
+		return rules;
+	},
+
+	// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
+	normalizeRule: function(data) {
+		if( typeof data == "string" ) {
+			var transformed = {};
+			$.each(data.split(/\s/), function() {
+				transformed[this] = true;
+			});
+			data = transformed;
+		}
+		return data;
+	},
+
+	// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
+	addMethod: function(name, method, message) {
+		$.validator.methods[name] = method;
+		$.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
+		if (method.length < 3) {
+			$.validator.addClassRules(name, $.validator.normalizeRule(name));
+		}
+	},
+
+	methods: {
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/required
+		required: function(value, element, param) {
+			// check if dependency is met
+			if ( !this.depend(param, element) )
+				return "dependency-mismatch";
+			switch( element.nodeName.toLowerCase() ) {
+			case 'select':
+				// could be an array for select-multiple or a string, both are fine this way
+				var val = $(element).val();
+				return val && val.length > 0;
+			case 'input':
+				if ( this.checkable(element) )
+					return this.getLength(value, element) > 0;
+			default:
+				return $.trim(value).length > 0;
+			}
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/remote
+		remote: function(value, element, param) {
+			if ( this.optional(element) )
+				return "dependency-mismatch";
+
+			var previous = this.previousValue(element);
+			if (!this.settings.messages[element.name] )
+				this.settings.messages[element.name] = {};
+			previous.originalMessage = this.settings.messages[element.name].remote;
+			this.settings.messages[element.name].remote = previous.message;
+
+			param = typeof param == "string" && {url:param} || param;
+
+			if ( this.pending[element.name] ) {
+				return "pending";
+			}
+			if ( previous.old === value ) {
+				return previous.valid;
+			}
+
+			previous.old = value;
+			var validator = this;
+			this.startRequest(element);
+			var data = {};
+			data[element.name] = value;
+			$.ajax($.extend(true, {
+				url: param,
+				mode: "abort",
+				port: "validate" + element.name,
+				dataType: "json",
+				data: data,
+				success: function(response) {
+					validator.settings.messages[element.name].remote = previous.originalMessage;
+					var valid = response === true;
+					if ( valid ) {
+						var submitted = validator.formSubmitted;
+						validator.prepareElement(element);
+						validator.formSubmitted = submitted;
+						validator.successList.push(element);
+						validator.showErrors();
+					} else {
+						var errors = {};
+						var message = response || validator.defaultMessage( element, "remote" );
+						errors[element.name] = previous.message = $.isFunction(message) ? message(value) : message;
+						validator.showErrors(errors);
+					}
+					previous.valid = valid;
+					validator.stopRequest(element, valid);
+				}
+			}, param));
+			return "pending";
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/minlength
+		minlength: function(value, element, param) {
+			return this.optional(element) || this.getLength($.trim(value), element) >= param;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
+		maxlength: function(value, element, param) {
+			return this.optional(element) || this.getLength($.trim(value), element) <= param;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
+		rangelength: function(value, element, param) {
+			var length = this.getLength($.trim(value), element);
+			return this.optional(element) || ( length >= param[0] && length <= param[1] );
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/min
+		min: function( value, element, param ) {
+			return this.optional(element) || value >= param;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/max
+		max: function( value, element, param ) {
+			return this.optional(element) || value <= param;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/range
+		range: function( value, element, param ) {
+			return this.optional(element) || ( value >= param[0] && value <= param[1] );
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/email
+		email: function(value, element) {
+			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
+			return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/url
+		url: function(value, element) {
+			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
+			return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/date
+		date: function(value, element) {
+			return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
+		dateISO: function(value, element) {
+			return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/number
+		number: function(value, element) {
+			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/digits
+		digits: function(value, element) {
+			return this.optional(element) || /^\d+$/.test(value);
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
+		// based on http://en.wikipedia.org/wiki/Luhn
+		creditcard: function(value, element) {
+			if ( this.optional(element) )
+				return "dependency-mismatch";
+			// accept only digits and dashes
+			if (/[^0-9-]+/.test(value))
+				return false;
+			var nCheck = 0,
+				nDigit = 0,
+				bEven = false;
+
+			value = value.replace(/\D/g, "");
+
+			for (var n = value.length - 1; n >= 0; n--) {
+				var cDigit = value.charAt(n);
+				var nDigit = parseInt(cDigit, 10);
+				if (bEven) {
+					if ((nDigit *= 2) > 9)
+						nDigit -= 9;
+				}
+				nCheck += nDigit;
+				bEven = !bEven;
+			}
+
+			return (nCheck % 10) == 0;
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/accept
+		accept: function(value, element, param) {
+			param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
+			return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i"));
+		},
+
+		// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
+		equalTo: function(value, element, param) {
+			// bind to the blur event of the target in order to revalidate whenever the target field is updated
+			// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
+			var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
+				$(element).valid();
+			});
+			return value == target.val();
+		}
+
+	}
+
+});
+
+// deprecated, use $.validator.format instead
+$.format = $.validator.format;
+
+})(jQuery);
+
+// ajax mode: abort
+// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
+// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()
+;(function($) {
+	var pendingRequests = {};
+	// Use a prefilter if available (1.5+)
+	if ( $.ajaxPrefilter ) {
+		$.ajaxPrefilter(function(settings, _, xhr) {
+			var port = settings.port;
+			if (settings.mode == "abort") {
+				if ( pendingRequests[port] ) {
+					pendingRequests[port].abort();
+				}
+				pendingRequests[port] = xhr;
+			}
+		});
+	} else {
+		// Proxy ajax
+		var ajax = $.ajax;
+		$.ajax = function(settings) {
+			var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
+				port = ( "port" in settings ? settings : $.ajaxSettings ).port;
+			if (mode == "abort") {
+				if ( pendingRequests[port] ) {
+					pendingRequests[port].abort();
+				}
+				return (pendingRequests[port] = ajax.apply(this, arguments));
+			}
+			return ajax.apply(this, arguments);
+		};
+	}
+})(jQuery);
+
+// provides cross-browser focusin and focusout events
+// IE has native support, in other browsers, use event caputuring (neither bubbles)
+
+// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
+// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target
+;(function($) {
+	// only implement if not provided by jQuery core (since 1.4)
+	// TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
+	if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
+		$.each({
+			focus: 'focusin',
+			blur: 'focusout'
+		}, function( original, fix ){
+			$.event.special[fix] = {
+				setup:function() {
+					this.addEventListener( original, handler, true );
+				},
+				teardown:function() {
+					this.removeEventListener( original, handler, true );
+				},
+				handler: function(e) {
+					arguments[0] = $.event.fix(e);
+					arguments[0].type = fix;
+					return $.event.handle.apply(this, arguments);
+				}
+			};
+			function handler(e) {
+				e = $.event.fix(e);
+				e.type = fix;
+				return $.event.handle.call(this, e);
+			}
+		});
+	};
+	$.extend($.fn, {
+		validateDelegate: function(delegate, type, handler) {
+			return this.bind(type, function(event) {
+				var target = $(event.target);
+				if (target.is(delegate)) {
+					return handler.apply(target, arguments);
+				}
+			});
+		}
+	});
+})(jQuery);
+
+
+/* ===================================
+   ====== PRODUCT.ATTRIBUTES.JS ======
+   =================================== */
+
+(function($){
+	// this closure contains option-type-specific plugins for display enhancement and validation
+
+	if (typeof String.prototype.pad == 'undefined') {
+		String.PAD_TYPE_LEFT = 0;
+		String.PAD_TYPE_RIGHT = 1;
+
+		String.prototype.pad = function (length, string, type) {
+			if (type === undefined) {
+				type = String.PAD_TYPE_RIGHT;
+			}
+
+			if (this.length >= length) {
+				// don't run padding code if the string is long enough already
+				return String(this);
+			}
+
+			var difference = length - this.length,
+				padding = '';
+
+			// repeat the string until we have all the padding we need
+			while (padding.length < difference) {
+				padding += string;
+			}
+
+			// pad the original string on the correct side
+			if (type == String.PAD_TYPE_RIGHT) {
+				return String(this) + padding.substr(0, difference);
+			}
+
+			return padding.substr(0, difference) + String(this);
+		};
+	}
+
+	if (typeof Number.prototype.pad == 'undefined') {
+		Number.prototype.pad = function (length, string, type) {
+			return String(this).pad(length, string, type);
+		};
+	}
+
+	/**
+	 * Mobile screen dimmer- For mobile devices create a dimmer
+	 * object to show and hide the screen dimmer overlay.
+	 *
+	 * Usage:
+	 * dimmer.show(onClickCallback);
+	 * dimmer.hide()
+	 */
+	if(typeof config == 'object' && config.isMobile){
+		var dimmer = function(){
+			var clickHandler = null;
+			var dimmer = null;
+
+			if($('#Dimmer').length == 0){
+				$('body')
+					.children()
+					.first()
+						.before('<div id="Dimmer" style="display:none"></div>');
+			}
+
+			dimmer = $('#Dimmer');
+
+			dimmer.click(function(){
+				clickHandler();
+			});
+
+			return {
+				show: function(handler) {
+					clickHandler = handler;
+
+					dimmer
+						.height($('body').height())
+						.show();
+				},
+
+				hide: function() {
+					dimmer.hide();
+				}
+			}
+		}();
+	}
+
+	$(function(){
+		// mark the add to cart form as being handled by jquery.validate
+		$('#productDetailsAddToCartForm').validate({
+			onsubmit: false,
+			ignoreTitle: true,
+			showErrors: function (errorMap, errorList) {
+				// nothing
+			},
+			invalidHandler: function (form, validator) {
+				if (!validator.size()) {
+					return;
+				}
+
+				alert(validator.errorList[0].message);
+			}
+		});
+	});
+
+	$.fn.updateProductDetails = function (options) {
+		options = $.extend({
+			baseImage: '',
+			baseThumb: ''
+		}, options);
+
+		return this.each(function(){
+			var $this = $(this),
+				showAddCartButton = options.price !== undefined && options.instock && options.purchasable;
+			var ShowAddToCartQtyBox = (typeof ShowAddToCartQtyBox) != 'undefined' ? ShowAddToCartQtyBox : false;
+
+            var defaults = {
+                findProductAttributeId: function(el) {
+                    return el.name;
+                },
+                isInStock: function(el) {
+                    return false;
+                },
+                hide_option: function(el, inStock, options) {
+                    $(el).parents('li:first').toggle(inStock);
+                },
+                label_option: function(el, inStock, options) {
+                    $(el).closest('label').toggleClass('outStock', !inStock);
+                }
+            };
+
+            // enable out of stock status update
+            $this.productOptionViewRadioOutOfStock(options, defaults);
+            $this.productOptionViewRectangleOutOfStock(options, defaults);
+            $this.productOptionViewPickListSwatchOutOfStock(options, defaults);
+            $this.productOptionViewProductPickListOutOfStock(options, defaults);
+            $this.productOptionViewSelectOutOfStock(options);
+
+            // hide/show the add to cart button based on price and stock
+			$this.find('.AddCartButton')
+				.closest('.DetailRow')
+					.toggle(showAddCartButton);
+
+            // hide/show the add to cart button on QuickView
+            $this.find('.addToCart input').toggle(showAddCartButton)
+                .next().toggle(showAddCartButton);
+
+
+			// hide/show the cart qty box too incase it's been moved? (product.functions.js did this)
+			$this.find('.ShowAddToCartQtyBox')
+				.toggle(showAddCartButton && ShowAddToCartQtyBox);
+
+			// out of stock message
+			$this.find('.OutOfStockMessage')
+				.toggle(!showAddCartButton);
+
+			if (options.purchasingMessage !== undefined) {
+				$this.find('.OutOfStockMessage')
+					.text(options.purchasingMessage);
+			}
+
+			// hide/show stock level
+			$this.find('.VariationProductInventory')
+				.closest('.DetailRow')
+					.toggle((options.stockMessage || options.stock) !== undefined)
+					.end()
+				.text(options.stockMessage || options.stock);
+
+			// hide/show weight
+			$this.find('.VariationProductWeight')
+				.text(options.weight === undefined ? '' : options.weight)
+				.closest('.DetailRow')
+					.toggle(options.weight !== undefined);
+
+			// hide/show sku
+			$this.find('.VariationProductSKU')
+				.text(options.sku === undefined ? '' : options.sku)
+				.closest('.DetailRow')
+					.toggle(options.sku !== undefined);
+
+			// hide/show price - slightly more complex code due to control panel sharing
+			$this.find('.VariationProductPrice').each(function(){
+				var $this = $(this);
+
+				if ($this.is('input')) {
+					// if the price is an input then set its raw value
+					$this.val(options.unformattedPrice === undefined ? '' : options.unformattedPrice);
+					return;
+				}
+
+				// otherwise use regular hide/show formatted behaviour
+				$this.html(options.price === undefined ? '' : options.price)
+					.closest('.DetailRow')
+						.toggle(options.price !== undefined);
+			});
+
+			// price label
+			if (options.priceLabel !== undefined) {
+				$this.find('.PriceRow .Label').text(options.priceLabel);
+			}
+
+			// hide/show savings
+			$this.find('.YouSaveAmount')
+				.text(options.saveAmount === undefined ? '' : options.saveAmount);
+
+			$this.find('.YouSave, .RetailPrice')
+				.toggle(options.saveAmount !== undefined);
+
+			$this.find('.RetailPrice .Value')
+				.html(options.saveAmount === undefined || options.rrp === undefined ? '' : options.rrp);
+
+			var zoom, thumb;
+
+			if (options.imageRuleId !== undefined && options.image !== undefined && options.thumb !== undefined) {
+				// image was supplied and is different from the base image
+				zoom = options.image;
+				thumb = options.thumb;
+				ShowVariationThumb = options.imageRuleId; // hack to re-use existing lightbox code
+			} else if (options.baseImage !== undefined && options.baseThumb !== undefined) {
+				// show the base image
+				zoom = options.baseImage;
+				thumb = options.baseThumb;
+				ShowVariationThumb = false;
+			} else {
+				// no image provided at all?
+				ShowVariationThumb = false;
+			}
+
+			if (zoom && thumb) {
+				$('.main-image').attr('src',zoom);
+				$('.product-thumbs li:first img').attr('src',zoom);
+				$('.zoomie-window').css('background-image','url('+zoom+')');
+
+                if(window['removeTinyImageHighlight'] && window['replaceProductImageInZoom']) {
+                    removeTinyImageHighlight();
+                    replaceProductImageInZoom(zoom, thumb);
+                }
+			} else {
+				$this.find('.ProductThumbImage').hide();
+			}
+		});
+	};
+
+	/**
+	* This plugin implements behaviours applicable to all option types which can trigger sku / rule effects (change of
+	* price, weight, image, etc.)
+	*/
+	$.fn.productOptionRuleCondition = function (options) {
+		return this.each(function(){
+			$(this)
+				.addClass('productAttributeRuleCondition')
+				.find(':input')
+				.change(function(){
+					// ask the server for any updated product information based on current options - can't use
+					// ajaxSubmit here because it will try to send files too so use serializeArray and put our custom
+					// 'w' parameter into it
+
+                    // we want to enable out-of-stock notification for all 3 (product detail, quickview and cart) pages
+                    // and for some historical reasons they all have different html structure
+                    // (eg, cart page dosn't have #productDetailsAddToCartFrom form)
+                    // therefore we need to find the correct form to serialize
+                    // rather than doing massive template upgrades
+                    var data = null;
+                    if($('#productDetailsAddToCartForm').length) {
+                        var data = $('#productDetailsAddToCartForm').serializeArray();
+                    } else {
+                        var data = $('.productAttributeList:first').closest('form').serializeArray();
+                    }
+
+					data.push({
+						name: 'w',
+						value: 'getProductAttributeDetails'
+					});
+
+					data = $.param(data);
+
+					$.ajax({
+						url: '/remote.php',
+						type: 'POST',
+						dataType: 'json',
+						data: data,
+						success: function (response) {
+							if (response.success && response.details) {
+                                if($('#ProductDetails').length) {
+                                    $('#ProductDetails').updateProductDetails(response.details);
+                                }
+                                else {
+                                    $('.productAttributeList:first').updateProductDetails(response.details);
+                                }
+							}
+						}
+					});
+				});
+		});
+	};
+
+	/**
+	* This plugin implements behaviours applicable to all configurable option types (validation, etc.).
+	*/
+	$.fn.productOptionConfigurable = function (options) {
+		if (options.condition) {
+			this.productOptionRuleCondition(options);
+		}
+
+		return this.each(function(){
+			var target = $(this).find('.validation').eq(0); // only select the first matching target (for radios)
+			if (!target.length) {
+				// could not find validation target - validate plugin doesn't like being passed an empty jquery result
+				return;
+			}
+
+			if (options.required) {
+				target.rules('add', {
+					required: true,
+					messages: {
+						required: options.validation.required
+					}
+				});
+			}
+		});
+	};
+
+	/**
+	* This plugin implements a generic product options behaviour which marks a parent element of the currently selected
+	* choice with a 'selectedValue' class for easy css-based highlighting.
+	*/
+	$.fn.productOptionSelectedValue = function (options) {
+		options = $.extend({
+			container: 'li'
+		}, options || {});
+
+		return this.each(function(){
+			var $this = $(this);
+
+			// when selecting an input, apply a css class to it's parent list item
+            $this.delegate('input', 'click', function(event){
+                var isSelected = $(this).closest(options.container).hasClass('selectedValue');
+                if(isSelected) {
+                    // unselect the already selected one and
+                    // trigger the change event to update out-of-stock status
+                    $(this).prop('checked', false);
+                    $(this).change();
+                }
+                else {
+                    // change of selection, marked all as unselected
+                    $this.find(options.container).removeClass('selectedValue');
+                }
+                $(this).closest(options.container).toggleClass('selectedValue');
+            });
+
+			// apply on page load too incase something is pre-selected
+			$this.find(':checked')
+				.closest(options.container)
+					.addClass('selectedValue');
+		});
+	};
+
+	/**
+	* This plugin implements a generic product options behaviour which provides a small preview / zoom window for
+	* swatches and images.
+	*/
+	$.fn.productOptionPreviewDisplay = function (options) {
+
+		// disabled for mobile devices
+		if (typeof config == 'object' && config.isMobile){
+			return;
+		}
+
+		var previewDisplay = $('.productOptionPreviewDisplay');
+
+		if (!previewDisplay.size()) {
+			previewDisplay = $('<div class="productOptionPreviewDisplay" />').appendTo('body');
+		}
+
+		$(this).delegate('.showPreview', 'mouseenter', function(){
+			// put preview content into the display container
+			var previewContent = $(this)
+				.closest('.hasPreview')
+					.find('.previewContent');
+
+			if (!previewContent.size()) {
+				return;
+			}
+
+			previewDisplay.empty();
+
+			previewContent.children()
+				.clone()
+				.find('.showPreview')
+					.removeClass('.showPreview')
+					.end()
+				.appendTo(previewDisplay);
+
+			var offset = $(this).offset();
+
+			// position and show the display
+			previewDisplay
+				.css({
+					top: offset.top + $(this).outerHeight(true) + 'px',
+					left: offset.left + $(this).outerWidth(true) + 'px'
+				})
+				.stop(true, true)
+				.fadeIn();
+		});
+
+		$(this).delegate('.showPreview', 'mouseleave', function(){
+			// hide the display
+			previewDisplay
+				.stop(true, true)
+				.fadeOut();
+		});
+
+		return this;
+	};
+
+	/**
+	* This plugin implements behaviours for pick-list types rendering as radio inputs.
+	*/
+	$.fn.productOptionViewRadio = function (options) {
+		this.productOptionSelectedValue(options);
+		return this;
+	};
+
+	/**
+	* This plugin implements behaviours for pick-list types rendering as rectangle inputs.
+	*/
+	$.fn.productOptionViewRectangle = function (options) {
+		this.productOptionSelectedValue(options);
+		return this.each(function(){
+			// deselect the radio element when clicking on rectangles as the radio element itself isn't visible
+			$(this).delegate('input', 'click', function(){
+				$(this).blur();
+			});
+		});
+	};
+
+    $.fn.productOptionViewOutOfStock = function(options, view) {
+
+        // since out-of-stock feature is feature flagged
+        // check the existence of those oos specific parameters before doing any real work
+        if(typeof(options.selectedAttributeValues) == 'undefined' || typeof(options.inStockAttributeValues) == 'undefined') {
+            return true;
+        }
+
+        $.each(this.find('.productAttributeRow'), function(index, row) {
+
+            if($(row).find('.productAttributeLabel').find('.required:visible').length == 0) {
+                // not mandatory option should not be part of SKU
+                // and should be ignored
+                return true;
+            }
+
+            $.each($(row).find('.productAttributeValue').find(view.selector), function(index, el) {
+                var productAttributeId = view.findProductAttributeId(el);
+                var matches = productAttributeId.match(/attribute\[(\d+)\]/);
+                productAttributeId = parseInt(matches[1], 10);
+                var selectedValue = options.selectedAttributeValues[productAttributeId];
+                var currentValue = parseInt(el.value, 10);
+
+                if ($.inArray(currentValue, options.inStockAttributeValues) !== -1 || view.isInStock(el)) {
+                    view[options.optionOutOfStockBehavior](el, true, options);
+                } else {
+                    view[options.optionOutOfStockBehavior](el, false, options);
+                }
+          });
+        });
+    };
+
+    /**
+     * This plugin implements behavior for Radio View
+     * to handle out-of-stock status update
+     */
+    $.fn.productOptionViewRadioOutOfStock = function(options, defaults) {
+        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
+            selector: '.productOptionViewRadio input',
+            label_option: function(el, inStock, options) {
+                $(el).closest('label').toggleClass('outStock', !inStock);
+                $(el).closest('label').find('span.name').toggleOutStockText(options, inStock);
+            }})
+        );
+    };
+
+    /**
+     * This plugin implements behavior for Rectangle View
+     * to handle out-of-stock status update
+     */
+    $.fn.productOptionViewRectangleOutOfStock = function(options, defaults) {
+        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
+            selector: '.productOptionViewRectangle input'
+            })
+        );
+    };
+
+    /**
+     * This plugin implements behavior for Swatch View
+     * to handle out-of-stock status update
+     */
+    $.fn.productOptionViewPickListSwatchOutOfStock = function(options, defaults) {
+        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
+            selector: '.productOptionPickListSwatch input'
+            })
+        );
+    };
+
+    /**
+     * This plugin implements behavior for Product List
+     * to handle out-of-stock status update
+     */
+    $.fn.productOptionViewProductPickListOutOfStock = function(options, defaults) {
+        this.productOptionViewOutOfStock(options, $.extend({}, defaults, {
+            selector: '.productOptionViewProductPickList input, .productOptionViewProductPickListWithImage input',
+            hide_option: function(el, inStock, options) {
+                $(el).parents('tr:first').toggle(inStock);
+            },
+            label_option: function(el, inStock, options) {
+                $(el).closest('label').toggleClass('outStock', !inStock);
+                $(el).siblings('span').toggleOutStockText(options, inStock);
+            }})
+        );
+    };
+
+    /**
+     * This plugin implements behavior for select/dropdown pick-list types
+     * to handle out-of-stock status update
+     */
+    $.fn.productOptionViewSelectOutOfStock = function(options) {
+        this.productOptionViewOutOfStock(options, {
+            selector: 'option',
+            findProductAttributeId: function(el) {
+                return $(el).parents('select:first').prop('name');
+            },
+            isInStock: function(el) {
+                // select/dropdown has a default please choose a option
+                // which should always be considered in-stock option value
+                return el.value === '';
+            },
+            hide_option: function(el, inStock, options) {
+                var select = $(el).closest('select');
+                if (select.is(':disabled')) {
+                    // get the real select element
+                    select = select.data('linkedSelectElement');
+                }
+                // save the currently selected value
+                var val = select.val();
+                $(el).toggleOption(inStock);
+                // apply the previously selected value
+                select.val(val);
+                // ensure the label matches the selected options text
+                select.siblings('span').text(select.find(':selected').text());
+            },
+            label_option: function(el, inStock, options) {
+                $(el).toggleOutStockText(options, inStock);
+            }
+        });
+    };
+
+    $.fn.toggleOutStockText = function(options, inStock) {
+        if (options.outOfStockMessage) {
+            var text = $(this).text();
+            if(inStock) {
+                $(this).text(text.replace(' ('+options.outOfStockMessage+')', ''));
+            }
+            else if(text.match(options.outOfStockMessage) === null) {
+                $(this).text(text + ' ('+options.outOfStockMessage+') ');
+            }
+        }
+    };
+
+    /**
+     * Visually hides the option from user by moving option to an invisible
+     * and disabled select placeholder element.
+     *
+     * This approach is required rather than simply hiding the option because
+     * hidden option can still be included when serializeArray() is called and
+     * cause wrong value to be submitted.
+     * (eg. if you have option 1, 2, 3 and 2 is hidden, when you select 3,
+     * serializeArray() will use the value of 2 instead of 3)
+     */
+    $.fn.toggleOption = function(show) {
+        var currentSelectElement = $(this).closest('select'), // the select containing this
+            disabledSelectElement, // the disabled select element
+            selectElement; // the real select element
+
+        if (currentSelectElement.is(':disabled')) {
+            disabledSelectElement = currentSelectElement;
+            selectElement = disabledSelectElement.data('linkedSelectElement');
+        } else {
+            selectElement = currentSelectElement;
+            disabledSelectElement = currentSelectElement.data('linkedSelectElement');
+            if (!disabledSelectElement) {
+                // create the disabled placeholder select element
+                disabledSelectElement = 
+                    $('<select>')
+                        .prop('disabled', true)
+                        .hide()
+                        .attr('name', currentSelectElement.attr('name'))
+                        .addClass(currentSelectElement.attr('class'))
+                        .data('linkedSelectElement', selectElement)
+                        .insertAfter(selectElement);
+                selectElement.data('linkedSelectElement', disabledSelectElement);
+            }
+        }
+
+        // move the option to the correct select element if required
+        if (currentSelectElement.is(':disabled') && show) {
+            var previousIndex = this.data('index');
+            if (previousIndex > 0) {
+                this.insertAfter(selectElement.find('option:eq(' + (previousIndex-1) + ')'));
+            } else {
+                $(this).prependTo(selectElement);
+            }
+        } else if (!currentSelectElement.is(':disabled') && !show) {
+            this.data('index', currentSelectElement.find('option').index(this));
+            $(this).prependTo(disabledSelectElement);
+        }
+    };
+
+	/**
+	* This plugin implements behaviours for pick-list types rendering as a select input.
+	*/
+	$.fn.productOptionViewSelect = function (options) {
+		// nothing to do
+		return this;
+	};
+
+	/**
+	* This plugin implements behaviours for product picklist types
+	*/
+	$.fn.productOptionViewProductPickList = function (options) {
+		this.productOptionSelectedValue(options);
+		return this;
+	};
+
+	/**
+	* Checkbox required validator. The built-in required method looks up elements by name which causes the
+	* validation to not work for checkbox attributes which have a hidden input component.
+	*/
+	$.validator.addMethod('checkboxRequired', function (value, element) {
+		return this.findByName(element.name).filter(':checkbox:checked').length > 0;
+	});
+
+	/**
+	* This plugin implements behaviours applicable to checkbox option types.
+	*/
+	$.fn.productOptionConfigurableEntryCheckbox = function (options) {
+		var required = options.required;
+		options.required = false;
+
+		this.productOptionConfigurable(options);
+
+		return this.each(function(){
+			var target = $(this).find('.validation');
+
+			if (required) {
+				target.rules('add', {
+					checkboxRequired: true,
+					messages: {
+						checkboxRequired: options.validation.required
+					}
+				});
+			}
+		});
+	};
+
+	/**
+	* Validates the file type (extension)
+	*/
+	$.validator.addMethod('fileType', function (value, element, fileTypes) {
+		if (!value) {
+			return true;
+		}
+
+		var dot, extension;
+
+		dot = value.lastIndexOf('.');
+
+		if (dot < 0) {
+			return false;
+		}
+
+		extension = value.substr(dot + 1).toLowerCase();
+
+		if (extension == '') {
+			return false;
+		}
+
+		return $.inArray(extension, fileTypes) >= 0;
+	});
+
+	/**
+	* This plugin implements behaviours applicable to file-upload option types.
+	*/
+	$.fn.productOptionConfigurableEntryFile = function (options) {
+		// if the delete existing file input is present, then this field isn't required
+		if ($('#' + $(this).attr('id') + '_Delete').length) {
+			options.required = false;
+		}
+
+		this.productOptionConfigurable(options);
+
+		return this.each(function(){
+			var target = $(this).find('.validation');
+
+			if ($.isArray(options.fileTypes) && options.fileTypes.length) {
+				target.rules('add', {
+					fileType: options.fileTypes,
+					messages: {
+						fileType: options.validation.typeNotAllowed
+					}
+				});
+			}
+		});
+	};
+
+	/**
+	* Checks the earliest date
+	*/
+	$.validator.addMethod('earliestDate', function (value, element, earliestDate) {
+		if (!value) {
+			return true;
+		}
+
+		var date = new Date();
+		date.setISO(value);
+
+		return date >= earliestDate;
+	});
+
+	/**
+	* Checks latest date
+	*/
+	$.validator.addMethod('latestDate', function (value, element, latestDate) {
+		if (!value) {
+			return true;
+		}
+
+		var date = new Date();
+		date.setISO(value);
+
+		return date <= latestDate;
+	});
+
+	/**
+	* Checks that a date falls between a range
+	*/
+	$.validator.addMethod('dateRange', function (value, element, param) {
+		if (!value) {
+			return true;
+		}
+
+		var date = new Date();
+		date.setISO(value);
+
+		return date >= param.earliestDate && date <= param.latestDate;
+	});
+
+	/**
+	* This plugin implements behaviours applicable to text-entry option types.
+	*/
+	$.fn.productOptionConfigurableEntryDate = function (options) {
+		this.productOptionConfigurable(options); // inherit base configurable behaviour
+
+		return this.each(function(){
+			var $this = $(this),
+				validationTarget = $this.find('.validation'),
+				yearField = $this.find('.year'),
+				monthField = $this.find('.month'),
+				dayField = $this.find('.day'),
+				_revalidate;
+
+			_revalidate = function () {
+				validationTarget
+					.filter('.valid, .error')
+					.each(function(){
+						$(this).valid();
+					});
+			};
+
+			// whenever a date select is changed, populate the hidden-for-validation field with the date string - note
+			// this is for js validation only and server validation should still be performed on individual selects for
+			// when js is disabled
+			$this.find('.month, .day, .year')
+					.change(function(){
+						// build y-m-d string for locale-neutral validation
+						var year = yearField.val(),
+							month = monthField.val(),
+							day = dayField.val(),
+							date = '';
+
+						if (year && month && day) {
+							date = year + '-' + month + '-' + day;
+						}
+
+						// populate the validation target and trigger change events
+						validationTarget.val(date);
+						_revalidate();
+					})
+					.change(); // trigger change once on plugin application to populate input
+
+			// after the above, we can validate a date in the hidden field because we know the format is fine
+			validationTarget.rules('add', {
+				dateISO: true,
+				messages: {
+					dateISO: options.validation.invalidDate
+				}
+			});
+
+			if (options.limitDate) {
+				var earliestDate, latestDate;
+				earliestDate = new Date(options.earliestDate * 1000);
+				earliestDate.setHours(0,0,0);
+
+				latestDate = new Date(options.latestDate * 1000)
+				latestDate.setHours(23,59,59);
+
+				if (options.limitDateOption == 'range') {
+					validationTarget.rules('add', {
+						dateRange: {
+							earliestDate: earliestDate,
+							latestDate: latestDate
+						},
+						messages: {
+							dateRange: options.validation.range
+						}
+					});
+				}
+				else if (options.limitDateOption == 'earliest') {
+					validationTarget.rules('add', {
+						earliestDate: earliestDate,
+						messages: {
+							earliestDate: options.validation.earliestDate
+						}
+					});
+				}
+				else if (options.limitDateOption == 'latest') {
+					validationTarget.rules('add', {
+						latestDate: latestDate,
+						messages: {
+							latestDate: options.validation.latestDate
+						}
+					});
+				}
+			}
+
+			var selectDateCallback = function(dateText, picker){
+				dayField.val(picker.currentDay.pad(2, "0", String.PAD_TYPE_LEFT)).change();
+				monthField.val((picker.currentMonth + 1).pad(2, "0", String.PAD_TYPE_LEFT)).change();
+				yearField.val(picker.currentYear).change();
+			}
+
+			var getSelectedDate = function(){
+				var year = yearField.val(),
+					month = monthField.val(),
+					day = dayField.val();
+
+				if (!year || !month || !day) {
+					return;
+				}
+
+				return new Date(year, month - 1, day);
+			}
+
+			// add a datepicker ui
+			var picker = $this.find('.picker').datepicker({
+				showOn: 'both',
+				buttonImage: options.buttonImage,
+				buttonImageOnly: true,
+				defaultDate: new Date(),
+				firstDay: 1,
+				minDate: new Date(options.earliestDate * 1000),
+				maxDate: new Date(options.latestDate * 1000),
+				beforeShow: function (input, picker) {
+					// set the caledar to the correct date
+					$this.find('.picker')
+						.datepicker('setDate', getSelectedDate());
+				},
+				onSelect: selectDateCallback
+			});
+
+			if(typeof config == 'object' && config.isMobile) {
+				// hide the standard date selector and replace with a
+				// mobile date selector placeholder
+				$this.find('.dateselector')
+					.hide()
+					.after('<div class="mobile-dateselector"/>');
+
+				// add an onClose handler to the datepicker to hide the
+				// dimmer overlay
+				picker.datepicker('option', 'onClose', function(){
+					dimmer.hide();
+				});
+
+				// change the datepicker's onSelect handler to update the
+				// mobile date selector
+				var updateMobileDateSelector = function() {
+					$this.find('.mobile-dateselector').html(validationTarget.val());
+				}
+
+				picker.datepicker('option', 'onSelect', function(dateText, picker){
+					selectDateCallback(dateText, picker);
+					updateMobileDateSelector();
+				});
+
+				// add a click handler to show the dimmer overlay with
+				// the date picker centered on top
+				$this.find('.mobile-dateselector').click(
+					function(){
+						dimmer.show(function(){
+							picker.datepicker('hide');
+						});
+
+						picker.datepicker('show');
+
+						var widget = picker.datepicker('widget');
+
+						height = widget.height();
+						width = widget.width();
+						top =  ($(window).height() - height) / 2+$(window).scrollTop() + 'px';
+						left = ($(window).width() - width) / 2+$(window).scrollLeft() + 'px';
+
+						widget.css({
+							'z-index': 4001,
+							position: 'absolute',
+							top: top,
+							left: left
+						});
+					}
+				);
+
+				updateMobileDateSelector();
+			}
+		});
+	};
+
+	/**
+	* This plugin implements behaviours applicable to text-entry option types.
+	*/
+	$.fn.productOptionConfigurableEntryText = function (options) {
+		this.productOptionConfigurable(options); // inherit base configurable behaviour
+
+		return this.each(function(){
+			var target = $(this).find('.validation');
+
+			if (options.validateCharacterLength) {
+				if (options.minLength && options.maxLength) {
+					// use rangelength when both min and max lengths are set
+					target.rules('add', {
+						rangelength: [ options.minLength, options.maxLength ],
+						messages: {
+							rangelength: options.validation.rangeLength
+						}
+					});
+				} else if (options.minLength) {
+					target.rules('add', {
+						minlength: options.minLength,
+						messages: {
+							minlength: options.validation.minLength
+						}
+					});
+				} else if (options.maxLength) {
+					target.rules('add', {
+						maxlength: options.maxLength,
+						messages: {
+							maxlength: options.validation.maxLength
+						}
+					});
+				}
+			}
+		});
+	};
+
+	/**
+	* Number validator which is aware of locale-specific decimal and thousands tokens (but not currency)
+	*/
+	$.validator.addMethod('localenumber', function (value, element, param) {
+		var regex, pattern;
+
+		param = $.extend({
+			decimalToken: '.',
+			thousandsToken: ',',
+			integerOnly: false
+		}, param || {});
+
+		if (this.optional(element)) {
+			return true;
+		}
+
+		pattern = "^[-+]?(?:\\d+|\\d{1,3}(?:\\" + param.thousandsToken + "\\d{3})+)";
+		if (!param.integerOnly) {
+			pattern += "(?:\\" + param.decimalToken + "\\d+)?";
+		}
+		pattern += "$";
+
+		regex = new RegExp(pattern);
+
+		return regex.test(value);
+	});
+
+	/**
+	* This plugin implements behaviours applicable to numbers-only text-entry option types.
+	*/
+	$.fn.productOptionConfigurableEntryNumbersOnlyText = function (options) {
+		this.productOptionConfigurable(options);
+
+		// this does not inherit behaviour from the generic text input as lengths have a different meaning
+		return this.each(function(){
+			var target = $(this).find('.validation');
+
+			if (options.integerOnly) {
+				// validate an integer number
+				target.rules('add', {
+					localenumber: {
+						decimalToken: options.decimalToken,
+						thousandsToken: options.thousandsToken,
+						integerOnly: true
+					},
+					messages: {
+						localenumber: options.validation.notInteger
+					}
+				});
+			} else {
+				target.rules('add', {
+					localenumber: {
+						decimalToken: options.decimalToken,
+						thousandsToken: options.thousandsToken
+					},
+					messages: {
+						localenumber: options.validation.invalidNumber
+					}
+				});
+			}
+
+			if (options.limitInput) {
+				if (options.limitInputOption == 'range') {
+					target.rules('add', {
+						range: [ options.lowestValue, options.highestValue ],
+						messages: {
+							range: options.validation.range
+						}
+					});
+				} else if (options.limitInputOption == 'lowest') {
+					target.rules('add', {
+						min: options.lowestValue,
+						messages: {
+							min: options.validation.lowestValue
+						}
+					});
+				} else if (options.limitInputOption == 'highest') {
+					target.rules('add', {
+						max: options.highestValue,
+						messages: {
+							max: options.validation.highestValue
+						}
+					});
+				}
+			}
+		});
+	};
+
+	/**
+	* Max lines validator
+	*/
+	$.validator.addMethod('maxlines', function (value, element, maxLines) {
+		var matchedLines, matchedLinesLength;
+
+		matchedLines = value.match(/\n/gm);
+
+		if (matchedLines === null) {
+			matchedLinesLength = 1;
+		}
+		else {
+			matchedLinesLength = matchedLines.length + 1;
+		}
+
+		return matchedLinesLength <= maxLines;
+	});
+
+	/**
+	* This plugin implements behaviours specifically for multi-line text inputs.
+	*/
+	$.fn.productOptionConfigurableEntryTextMultiLine = function (options) {
+		this.productOptionConfigurableEntryText(options); // inherit base configurable behaviour
+
+		return this.each(function(){
+			var target = $(this).find('.validation');
+
+			if (options.validateLineLength && options.maxLines) {
+				target.rules('add', {
+					maxlines: options.maxLines,
+					messages: {
+						maxlines: options.validation.maxLines
+					}
+				});
+			}
+		});
+	};
+
+	/**
+	* This plugin implements behaviours for pick-list product-based types.
+	*/
+	$.fn.productOptionConfigurablePickListProduct = function (options) {
+		this.productOptionConfigurable(options);
+		return this;
+	};
+
+	/**
+	* This plugin implements behaviours for product picklist w/ image types
+	*/
+	$.fn.productOptionViewProductPickListWithImage = function (options) {
+		this.productOptionPreviewDisplay(options);
+
+		this.productOptionSelectedValue($.extend({}, options, {
+			container: 'tr'
+		}));
+
+		return this.each(function(){
+			$(this).find('input:checked')
+				// scroll the picklist to the pre-selected value to make it visible
+				.each(function(){
+					var $this = $(this);
+					$(this).closest('.scrollContainer')
+						.scrollTop($(this).closest('tr').position().top);
+				});
+		});
+	};
+
+	/**
+	* This plugin implements behaviours for pick-list swatch types.
+	*/
+	$.fn.productOptionConfigurablePickListSwatch = function (options) {
+		this.productOptionConfigurable(options); // inherit base configurable behaviour
+		this.productOptionSelectedValue(options);
+		this.productOptionPreviewDisplay(options);
+
+		return this.each(function(){
+			// the radio input is hidden when js is enabled so don't try to focus it
+			$(this).delegate('input', 'click', function(){
+				$(this).blur();
+			});
+		});
+	};
+
+	/**
+	* This plugin implements behaviours for pick-list set types.
+	*/
+	$.fn.productOptionConfigurablePickListSet = function (options) {
+		this.productOptionConfigurable(options); // inherit base configurable behaviour
+		// view specific behaviour will be applied by the view plugin
+		return this;
+	};
+
+})(jQuery);
+
+
+/* ==================================
+   ====== PRODUCT.FUNCTIONS.JS ======
+   ================================== */
+
+/* Product Variations */
+var baseProduct = {};
+
+function updateSelectedVariation(parent, variation, id) {
+	if(typeof(parent) == 'undefined') {
+		parent = $('body');
+	}
+	else {
+		parent = $(parent);
+	}
+
+	if (typeof id == 'undefined') {
+		id = '';
+	}
+
+	if(typeof(baseProduct.price) == 'undefined') {
+		if($('.AddCartButton', parent).css('display') == "none") {
+			var cartVisible = false;
+		}
+		else {
+			var cartVisible = true;
+		}
+
+		var stockMessageVisible = false;
+		if($('.OutOfStockMessage', parent).css('display') != 'none') {
+			stockMessageVisible = true;
+		}
+
+		var price;
+		$('.VariationProductPrice', parent).each(function(){
+			var $$ = $(this);
+			if ($$.is('input')) {
+				price = $$.val();
+			} else {
+				price = $$.html();
+			}
+		});
+
+		baseProduct = {
+			saveAmount: $.trim($('.YouSaveAmount', parent).html()),
+			price: $.trim(price),
+			sku: $.trim($('.VariationProductSKU', parent).html()),
+			weight: $.trim($('.VariationProductWeight', parent).html()),
+			thumb: $.trim($('.ProductThumbImage img', parent).attr('src')),
+			cartButton: cartVisible,
+			stockMessage: stockMessageVisible,
+			stockMessageText: $('.OutOfStockMessage', parent).html()
+		};
+	}
+
+	// Show the defaults again
+	if(typeof(variation) == 'undefined') {
+		$('.WishListVariationId', parent).val('');
+		$('.CartVariationId', parent).val('');
+		if(baseProduct.saveAmount) {
+			$('.YouSave', parent).show();
+			$('.YouSaveAmount').html(baseProduct.saveAmount);
+		} else {
+			$('.YouSave', parent).hide();
+		}
+		$('.VariationProductPrice', parent).each(function(){
+			var $$ = $(this);
+			if ($$.is('input')) {
+				$$.val(baseProduct.price);
+			} else {
+				$$.html(baseProduct.price);
+			}
+		});
+		$('.VariationProductSKU', parent).html(baseProduct.sku);
+		$('.VariationProductWeight', parent).html(baseProduct.weight);
+		$('.ProductThumbImage img', parent).attr('src', baseProduct.thumb);
+		$(parent).attr('currentVariation', '');
+		$(parent).attr('currentVariationImage', '')
+		if(baseProduct.sku == '') {
+			$('.ProductSKU', parent).hide();
+		}
+		if(baseProduct.cartButton) {
+			$('.AddCartButton', parent).show();
+			if(typeof ShowAddToCartQtyBox != 'undefined' && ShowAddToCartQtyBox=='1') {
+				$('.QuantityInput', parent).show();
+			}
+		}
+
+		if(baseProduct.stockMessage) {
+			$('.OutOfStockMessage', parent)
+				.show()
+				.html(baseProduct.stockMessageText)
+			;
+		}
+		else {
+			$('.OutOfStockMessage').hide();
+		}
+
+		$('.InventoryLevel', parent).hide();
+	}
+	// Otherwise, showing a specific variation
+	else {
+		$('.WishListVariationId', parent).val(id);
+		$('.CartVariationId', parent).val(id);
+
+		$('.VariationProductPrice', parent).each(function(){
+			var $$ = $(this),
+				price = baseProduct.price;
+
+			if (variation.price !== undefined) {
+				price = variation.price;
+			}
+
+			if ($$.is('input')) {
+				$$.val(price.replace(/[^0-9\.,]/g, ''));
+			} else {
+				$$.html(price);
+			}
+		});
+
+		if(variation.sku != '') {
+			$('.VariationProductSKU', parent).html(variation.sku);
+			$('.ProductSKU', parent).show();
+		}
+		else {
+			$('.VariationProductSKU', parent).html(baseProduct.sku);
+			if(baseProduct.sku) {
+				$('.ProductSKU', parent).show();
+			}
+			else {
+				$('.ProductSKU', parent).hide();
+			}
+		}
+		$('.VariationProductWeight', parent).html(variation.weight);
+		if(variation.instock == true) {
+			$('.AddCartButton', parent).show();
+			if(typeof ShowAddToCartQtyBox != 'undefined' && ShowAddToCartQtyBox=='1') {
+				$('.QuantityInput', parent).show();
+			}
+			$('.OutOfStockMessage', parent).hide();
+		}
+		else {
+			$('.AddCartButton, .QuantityInput', parent).hide();
+			$('.OutOfStockMessage', parent).html(lang.VariationSoldOutMessage);
+			$('.OutOfStockMessage', parent).show();
+		}
+		if(variation.thumb != '') {
+			ShowVariationThumb = true;
+			$('.ProductThumbImage img', parent).attr('src', variation.thumb);
+			$(parent).attr('currentVariation', id);
+			$(parent).attr('currentVariationImage', variation.image);
+
+			$('.ProductThumbImage a').attr("href", variation.image);
+		}
+		else {
+			$('.ProductThumbImage img', parent).attr('src', baseProduct.thumb);
+			$(parent).attr('currentVariation', '');
+			$(parent).attr('currentVariationImage', '')
+		}
+		if(variation.stock && parseInt(variation.stock)) {
+			$('.InventoryLevel', parent).show();
+			$('.VariationProductInventory', parent).html(variation.stock);
+		}
+		else {
+			$('.InventoryLevel', parent).hide();
+		}
+		if(variation.saveAmount) {
+			$('.YouSave', parent).show();
+			$('.YouSaveAmount').html(variation.saveAmount);
+			$('.RetailPrice').show();
+		} else {
+			$('.YouSave', parent).hide();
+			$('.RetailPrice').hide();
+		}
+	}
+}
+
+function CheckEventDate() {
+
+	var result = true;
+
+	if(typeof(eventDateData) == 'undefined') {
+		return true;
+	}
+
+	if ($('#EventDateDay').val() == -1 || $('#EventDateMonth').val() == -1 || $('#EventDateYear').val() == -1) {
+		alert(eventDateData['invalidMessage']);
+		return false;
+	}
+
+	if (eventDateData['type'] == 1) {
+		if (new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) > new Date(eventDateData['compDateEnd'])
+		 || new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) < new Date(eventDateData['compDate'])
+		) {
+			result = false;
+		}
+
+	} else if (eventDateData['type'] == 2) {
+		if (new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) < new Date(eventDateData['compDate'])) {
+			result = false;
+		}
+
+	} else if (eventDateData['type'] == 3) {
+		if (new Date($('#EventDateYear').val()+'/'+$('#EventDateMonth').val()+'/'+$('#EventDateDay').val()) > new Date(eventDateData['compDate'])) {
+			result = false;
+		}
+	} else {
+		result = true;
+	}
+
+	if (!result) {
+		alert(eventDateData['errorMessage']);
+	}
+	return result;
+}
+
+function selectCurrentVideo (videoId) {
+	$('.currentVideo').removeClass('currentVideo');
+	$('#video_' + videoId).addClass('currentVideo');
+}
+
+function showVideoPopup(videoId) {
+	var l = (screen.availWidth/2)-250;
+	var t = (screen.availHeight/2)-200;
+	window.open(config.ShopPath + "/productimage.php?video_id="+videoId, "imagePop", "toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=1,width=530,height=430,top="+t+",left="+l);
+}
+
+function updatePinterestMediaLink(image) 
+{
+	var src = $('.PinterestButtonContainer > a').attr('href');
+	if (typeof src != 'undefined') {
+		var newsrc = src.replace(new RegExp('&media=([^&]+)'), '&media=' + image);
+		$('.PinterestButtonContainer > a').attr('href', newsrc);
+	}
+}
+
+
+/* ========================
+   ====== PRODUCT.JS ======
+   ======================== */
+
+/**
+ * All functions have been moved to product.functions.js
+ * This is because this file was used in the control panel as well as the front end, but the
+ * below initialization code is only meant for the frontend.
+ */
+$(document).ready(function() {
+	// disable image popup on product page at 480 breakpoint
+	$(".product-thumbs a").click(function(event){
+		if($(window).width() <= 480){
+			event.stopPropagation();
+			event.preventDefault();
+		}
+	});
+
+	// are there any videos in the middle column?
+	if($('.videoRow').size() > 0) {
+		$('.videoRow').bind('click', function () {
+			var videoId = $(this).attr('id').replace('video_', '');
+			$('#FeaturedVideo').html('<object width="320" height="265">'
+				+ '<param name="movie" value="http://www.youtube.com/v/' + videoId + '?fs=1"></param>'
+				+ '<param name="allowFullScreen" value="true"></param>'
+				+ '<param name="allowscriptaccess" value="always"></param>'
+				+ '<embed src="http://www.youtube.com/v/'  + videoId + '?&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed>'
+				+ '</object>'
+			);
+			selectCurrentVideo(videoId);
+		});
+	}
+
+	// are there any videos in the left or right columns?
+	if($('.sideVideoRow').size() > 0) {
+		$('.sideVideoRow a').bind('click', function (event) {
+			event.preventDefault();
+
+			// grab the video id out of the tag id
+			var videoId = $(this).attr('id').replace('sidevideo_', '');
+
+			if(config.ProductImageMode == 'lightbox') {
+				// we need to hide any objects on the page as they appear onto of our modal window
+				$('#VideoContainer object').css('visibility', 'hidden');
+
+				$.iModal({
+					data: '<object width="480" height="385">'
+						+ '<param name="movie" value="http://www.youtube.com/v/' + videoId + '?fs=1"></param>'
+						+ '<param name="allowFullScreen" value="true"></param>'
+						+ '<param name="allowscriptaccess" value="always"></param>'
+						+ '<embed src="http://www.youtube.com/v/'  + videoId + '?&fs=1&autoplay=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed>'
+						+ '</object>',
+					title: $(this).find('img').attr('title'),
+					width: 510,
+					buttons: '<input type="button" onclick="$.iModal.close();" value="  ' + lang.Close +'  " />',
+					onBeforeClose: function() {
+						// reshow any objects that were hidden
+						$('#VideoContainer object').css('visibility', 'visible');
+					}
+				});
+			} else {
+				showVideoPopup(videoId);
+			}
+		});
+	}
+
+	// disable all but the first variation box
+	$(".VariationSelect:gt(0)").attr('disabled', 'disabled');
+
+	var prodVarSelectionMap = {}
+	$(".VariationSelect").change(function() {
+		// cache a map of currently selected values.
+		var mapIndex = 0;
+		$('.VariationSelect').each(function() {
+			prodVarSelectionMap[mapIndex] = this.value;
+			mapIndex++;
+		});
+
+		// get the index of this select
+		var index = $('.VariationSelect').index($(this));
+
+		// deselected an option, disable all select's greater than this
+		if (this.selectedIndex == 0) {
+			$('.VariationSelect:gt(' + index + ')').attr('disabled', 'disabled')
+			updateSelectedVariation($('body'));
+			return;
+		}
+		else {
+			// disable selects greater than the next
+			$('.VariationSelect:gt(' + (index + 1) + ')').attr('disabled', 'disabled')
+		}
+
+		//serialize the options of the variation selects
+		var optionIds = '';
+		$('.VariationSelect:lt(' + (index + 1) + ')').each(function() {
+			if (optionIds != '') {
+				optionIds += ',';
+			}
+
+			optionIds += $(this).val();
+		});
+		// request values for this option
+		$.getJSON(
+			'/remote.php?w=GetVariationOptions&productId=' + productId + '&options=' + optionIds,
+			function(data) {
+				// were options returned?
+				if (data.hasOptions) {
+					// load options into the next select, disable and focus it
+					$('.VariationSelect:eq(' + (index + 1) + ') option:gt(0)').remove();
+					$('.VariationSelect:eq(' + (index + 1) + ')').append(data.options).attr('disabled', false).focus();
+
+					// auto select previously selected option, and cascade down, if possible
+					var preVal = prodVarSelectionMap[(index + 1)];
+					if (preVal != '') {
+						var preOption = $('.VariationSelect:eq(' + (index + 1) + ') option[value=' +preVal+']');
+						if (preOption) {
+							preOption.attr('selected', true);
+							$('.VariationSelect:eq(' + (index + 1) + ')').trigger('change');
+						}
+					}
+				}
+				else if (data.comboFound) { // was a combination found instead?
+					// display price, image etc
+					updateSelectedVariation($('body'), data, data.combinationid);
+				}
+			}
+		);
+	});
+
+	//radio button variations
+	$('.ProductOptionList input[type=radio]').click(function() {
+		//current selected option id
+		var optionId = $(this).val();
+		// request values for this option
+		$.getJSON(
+			config.AppPath + '/remote.php?w=GetVariationOptions&productId=' + productId + '&options=' + optionId,
+			function(data) {
+				if (!data) {
+					return;
+				}
+
+				if (data.comboFound) { // was a combination found instead?
+					// display price, image etc
+					updateSelectedVariation($('body'), data, data.combinationid);
+				}
+			}
+		);
+	});
+});
+
+
+/* ============================
+   ====== JQUERY.FORM.JS ======
+   ============================ */
+
+/*!
+ * jQuery Form Plugin
+ * version: 2.64 (25-FEB-2011)
+ * @requires jQuery v1.3.2 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ */
+;(function($) {
+
+/*
+	Usage Note:
+	-----------
+	Do not use both ajaxSubmit and ajaxForm on the same form.  These
+	functions are intended to be exclusive.  Use ajaxSubmit if you want
+	to bind your own submit handler to the form.  For example,
+
+	$(document).ready(function() {
+		$('#myForm').bind('submit', function(e) {
+			e.preventDefault(); // <-- important
+			$(this).ajaxSubmit({
+				target: '#output'
+			});
+		});
+	});
+
+	Use ajaxForm when you want the plugin to manage all the event binding
+	for you.  For example,
+
+	$(document).ready(function() {
+		$('#myForm').ajaxForm({
+			target: '#output'
+		});
+	});
+
+	When using ajaxForm, the ajaxSubmit function will be invoked for you
+	at the appropriate time.
+*/
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+	// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+	if (!this.length) {
+		log('ajaxSubmit: skipping submit process - no element selected');
+		return this;
+	}
+
+	if (typeof options == 'function') {
+		options = { success: options };
+	}
+
+	var action = this.attr('action');
+	var url = (typeof action === 'string') ? $.trim(action) : '';
+	if (url) {
+		// clean url (don't include hash vaue)
+		url = (url.match(/^([^#]+)/)||[])[1];
+	}
+	url = url || window.location.href || '';
+
+	options = $.extend(true, {
+		url:  url,
+		type: this[0].getAttribute('method') || 'GET', // IE7 massage (see issue 57)
+		iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+	}, options);
+
+	// hook for manipulating the form data before it is extracted;
+	// convenient for use with rich editors like tinyMCE or FCKEditor
+	var veto = {};
+	this.trigger('form-pre-serialize', [this, options, veto]);
+	if (veto.veto) {
+		log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+		return this;
+	}
+
+	// provide opportunity to alter form data before it is serialized
+	if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+		log('ajaxSubmit: submit aborted via beforeSerialize callback');
+		return this;
+	}
+
+	var n,v,a = this.formToArray(options.semantic);
+	if (options.data) {
+		options.extraData = options.data;
+		for (n in options.data) {
+			if(options.data[n] instanceof Array) {
+				for (var k in options.data[n]) {
+					a.push( { name: n, value: options.data[n][k] } );
+				}
+			}
+			else {
+				v = options.data[n];
+				v = $.isFunction(v) ? v() : v; // if value is fn, invoke it
+				a.push( { name: n, value: v } );
+			}
+		}
+	}
+
+	// give pre-submit callback an opportunity to abort the submit
+	if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+		log('ajaxSubmit: submit aborted via beforeSubmit callback');
+		return this;
+	}
+
+	// fire vetoable 'validate' event
+	this.trigger('form-submit-validate', [a, this, options, veto]);
+	if (veto.veto) {
+		log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+		return this;
+	}
+
+	var q = $.param(a);
+
+	if (options.type.toUpperCase() == 'GET') {
+		options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+		options.data = null;  // data is null for 'get'
+	}
+	else {
+		options.data = q; // data is the query string for 'post'
+	}
+
+	var $form = this, callbacks = [];
+	if (options.resetForm) {
+		callbacks.push(function() { $form.resetForm(); });
+	}
+	if (options.clearForm) {
+		callbacks.push(function() { $form.clearForm(); });
+	}
+
+	// perform a load on the target only if dataType is not provided
+	if (!options.dataType && options.target) {
+		var oldSuccess = options.success || function(){};
+		callbacks.push(function(data) {
+			var fn = options.replaceTarget ? 'replaceWith' : 'html';
+			$(options.target)[fn](data).each(oldSuccess, arguments);
+		});
+	}
+	else if (options.success) {
+		callbacks.push(options.success);
+	}
+
+	options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+		var context = options.context || options;   // jQuery 1.4+ supports scope context
+		for (var i=0, max=callbacks.length; i < max; i++) {
+			callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+		}
+	};
+
+	// are there files to upload?
+	var fileInputs = $('input:file', this).length > 0;
+	var mp = 'multipart/form-data';
+	var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+	// options.iframe allows user to force iframe mode
+	// 06-NOV-09: now defaulting to iframe mode if file input is detected
+   if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {
+	   // hack to fix Safari hang (thanks to Tim Molendijk for this)
+	   // see:  http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+	   if (options.closeKeepAlive) {
+		   $.get(options.closeKeepAlive, fileUpload);
+		}
+	   else {
+		   fileUpload();
+		}
+   }
+   else {
+		$.ajax(options);
+   }
+
+	// fire 'notify' event
+	this.trigger('form-submit-notify', [this, options]);
+	return this;
+
+
+	// private function for handling file uploads (hat tip to YAHOO!)
+	function fileUpload() {
+		var form = $form[0];
+
+		if ($(':input[name=submit],:input[id=submit]', form).length) {
+			// if there is an input with a name or id of 'submit' then we won't be
+			// able to invoke the submit fn on the form (at least not x-browser)
+			alert('Error: Form elements must not have name or id of "submit".');
+			return;
+		}
+
+		var s = $.extend(true, {}, $.ajaxSettings, options);
+		s.context = s.context || s;
+		var id = 'jqFormIO' + (new Date().getTime()), fn = '_'+id;
+		var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ s.iframeSrc +'" />');
+		var io = $io[0];
+
+		$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+
+		var xhr = { // mock object
+			aborted: 0,
+			responseText: null,
+			responseXML: null,
+			status: 0,
+			statusText: 'n/a',
+			getAllResponseHeaders: function() {},
+			getResponseHeader: function() {},
+			setRequestHeader: function() {},
+			abort: function() {
+				this.aborted = 1;
+				$io.attr('src', s.iframeSrc); // abort op in progress
+			}
+		};
+
+		var g = s.global;
+		// trigger ajax global events so that activity/block indicators work like normal
+		if (g && ! $.active++) {
+			$.event.trigger("ajaxStart");
+		}
+		if (g) {
+			$.event.trigger("ajaxSend", [xhr, s]);
+		}
+
+		if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+			if (s.global) {
+				$.active--;
+			}
+			return;
+		}
+		if (xhr.aborted) {
+			return;
+		}
+
+		var timedOut = 0;
+
+		// add submitting element to data if we know it
+		var sub = form.clk;
+		if (sub) {
+			var n = sub.name;
+			if (n && !sub.disabled) {
+				s.extraData = s.extraData || {};
+				s.extraData[n] = sub.value;
+				if (sub.type == "image") {
+					s.extraData[n+'.x'] = form.clk_x;
+					s.extraData[n+'.y'] = form.clk_y;
+				}
+			}
+		}
+
+		// take a breath so that pending repaints get some cpu time before the upload starts
+		function doSubmit() {
+			// make sure form attrs are set
+			var t = $form.attr('target'), a = $form.attr('action');
+
+			// update form attrs in IE friendly way
+			form.setAttribute('target',id);
+			if (form.getAttribute('method') != 'POST') {
+				form.setAttribute('method', 'POST');
+			}
+			if (form.getAttribute('action') != s.url) {
+				form.setAttribute('action', s.url);
+			}
+
+			// ie borks in some cases when setting encoding
+			if (! s.skipEncodingOverride) {
+				$form.attr({
+					encoding: 'multipart/form-data',
+					enctype:  'multipart/form-data'
+				});
+			}
+
+			// support timout
+			if (s.timeout) {
+				setTimeout(function() { timedOut = true; cb(); }, s.timeout);
+			}
+
+			// add "extra" data to form if provided in options
+			var extraInputs = [];
+			try {
+				if (s.extraData) {
+					for (var n in s.extraData) {
+						extraInputs.push(
+							$('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />')
+								.appendTo(form)[0]);
+					}
+				}
+
+				// add iframe to doc and submit the form
+				$io.appendTo('body');
+				io.attachEvent ? io.attachEvent('onload', cb) : io.addEventListener('load', cb, false);
+				form.submit();
+			}
+			finally {
+				// reset attrs and remove "extra" input elements
+				form.setAttribute('action',a);
+				if(t) {
+					form.setAttribute('target', t);
+				} else {
+					$form.removeAttr('target');
+				}
+				$(extraInputs).remove();
+			}
+		}
+
+		if (s.forceSync) {
+			doSubmit();
+		}
+		else {
+			setTimeout(doSubmit, 10); // this lets dom updates render
+		}
+
+		var data, doc, domCheckCount = 50;
+
+		function cb() {
+			doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
+			if (!doc || doc.location.href == s.iframeSrc) {
+				// response not received yet
+				return;
+			}
+			io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
+
+			var ok = true;
+			try {
+				if (timedOut) {
+					throw 'timeout';
+				}
+
+				var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+				log('isXml='+isXml);
+				if (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {
+					if (--domCheckCount) {
+						// in some browsers (Opera) the iframe DOM is not always traversable when
+						// the onload callback fires, so we loop a bit to accommodate
+						log('requeing onLoad callback, DOM not available');
+						setTimeout(cb, 250);
+						return;
+					}
+					// let this fall through because server response could be an empty document
+					//log('Could not access iframe DOM after mutiple tries.');
+					//throw 'DOMException: not available';
+				}
+
+				//log('response detected');
+				xhr.responseText = doc.body ? doc.body.innerHTML : doc.documentElement ? doc.documentElement.innerHTML : null;
+				xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+				xhr.getResponseHeader = function(header){
+					var headers = {'content-type': s.dataType};
+					return headers[header];
+				};
+
+				var scr = /(json|script)/.test(s.dataType);
+				if (scr || s.textarea) {
+					// see if user embedded response in textarea
+					var ta = doc.getElementsByTagName('textarea')[0];
+					if (ta) {
+						xhr.responseText = ta.value;
+					}
+					else if (scr) {
+						// account for browsers injecting pre around json response
+						var pre = doc.getElementsByTagName('pre')[0];
+						var b = doc.getElementsByTagName('body')[0];
+						if (pre) {
+							xhr.responseText = pre.textContent;
+						}
+						else if (b) {
+							xhr.responseText = b.innerHTML;
+						}
+					}
+				}
+				else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
+					xhr.responseXML = toXml(xhr.responseText);
+				}
+
+				data = httpData(xhr, s.dataType, s);
+			}
+			catch(e){
+				log('error caught:',e);
+				ok = false;
+				xhr.error = e;
+				s.error && s.error.call(s.context, xhr, 'error', e);
+				g && $.event.trigger("ajaxError", [xhr, s, e]);
+			}
+
+			if (xhr.aborted) {
+				log('upload aborted');
+				ok = false;
+			}
+
+			// ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+			if (ok) {
+				s.success && s.success.call(s.context, data, 'success', xhr);
+				g && $.event.trigger("ajaxSuccess", [xhr, s]);
+			}
+
+			g && $.event.trigger("ajaxComplete", [xhr, s]);
+
+			if (g && ! --$.active) {
+				$.event.trigger("ajaxStop");
+			}
+
+			s.complete && s.complete.call(s.context, xhr, ok ? 'success' : 'error');
+
+			// clean up
+			setTimeout(function() {
+				$io.removeData('form-plugin-onload');
+				$io.remove();
+				xhr.responseXML = null;
+			}, 100);
+		}
+
+		var toXml = $.parseXML || function(s, doc) { // use parseXML if available (jQuery 1.5+)
+			if (window.ActiveXObject) {
+				doc = new ActiveXObject('Microsoft.XMLDOM');
+				doc.async = 'false';
+				doc.loadXML(s);
+			}
+			else {
+				doc = (new DOMParser()).parseFromString(s, 'text/xml');
+			}
+			return (doc && doc.documentElement && doc.documentElement.nodeName != 'parsererror') ? doc : null;
+		};
+		var parseJSON = $.parseJSON || function(s) {
+			return window['eval']('(' + s + ')');
+		};
+
+		var httpData = function( xhr, type, s ) { // mostly lifted from jq1.4.4
+			var ct = xhr.getResponseHeader('content-type') || '',
+				xml = type === 'xml' || !type && ct.indexOf('xml') >= 0,
+				data = xml ? xhr.responseXML : xhr.responseText;
+
+			if (xml && data.documentElement.nodeName === 'parsererror') {
+				$.error && $.error('parsererror');
+			}
+			if (s && s.dataFilter) {
+				data = s.dataFilter(data, type);
+			}
+			if (typeof data === 'string') {
+				if (type === 'json' || !type && ct.indexOf('json') >= 0) {
+					data = parseJSON(data);
+				} else if (type === "script" || !type && ct.indexOf("javascript") >= 0) {
+					$.globalEval(data);
+				}
+			}
+			return data;
+		};
+	}
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ *	is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ *	used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit.  ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+	// in jQuery 1.3+ we can fix mistakes with the ready state
+	if (this.length === 0) {
+		var o = { s: this.selector, c: this.context };
+		if (!$.isReady && o.s) {
+			log('DOM not ready, queuing ajaxForm');
+			$(function() {
+				$(o.s,o.c).ajaxForm(options);
+			});
+			return this;
+		}
+		// is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+		log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+		return this;
+	}
+
+	return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
+		if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+			e.preventDefault();
+			$(this).ajaxSubmit(options);
+		}
+	}).bind('click.form-plugin', function(e) {
+		var target = e.target;
+		var $el = $(target);
+		if (!($el.is(":submit,input:image"))) {
+			// is this a child element of the submit el?  (ex: a span within a button)
+			var t = $el.closest(':submit');
+			if (t.length == 0) {
+				return;
+			}
+			target = t[0];
+		}
+		var form = this;
+		form.clk = target;
+		if (target.type == 'image') {
+			if (e.offsetX != undefined) {
+				form.clk_x = e.offsetX;
+				form.clk_y = e.offsetY;
+			} else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+				var offset = $el.offset();
+				form.clk_x = e.pageX - offset.left;
+				form.clk_y = e.pageY - offset.top;
+			} else {
+				form.clk_x = e.pageX - target.offsetLeft;
+				form.clk_y = e.pageY - target.offsetTop;
+			}
+		}
+		// clear form vars
+		setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+	});
+};
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+	return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property.  An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic) {
+	var a = [];
+	if (this.length === 0) {
+		return a;
+	}
+
+	var form = this[0];
+	var els = semantic ? form.getElementsByTagName('*') : form.elements;
+	if (!els) {
+		return a;
+	}
+
+	var i,j,n,v,el,max,jmax;
+	for(i=0, max=els.length; i < max; i++) {
+		el = els[i];
+		n = el.name;
+		if (!n) {
+			continue;
+		}
+
+		if (semantic && form.clk && el.type == "image") {
+			// handle image inputs on the fly when semantic == true
+			if(!el.disabled && form.clk == el) {
+				a.push({name: n, value: $(el).val()});
+				a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+			}
+			continue;
+		}
+
+		v = $.fieldValue(el, true);
+		if (v && v.constructor == Array) {
+			for(j=0, jmax=v.length; j < jmax; j++) {
+				a.push({name: n, value: v[j]});
+			}
+		}
+		else if (v !== null && typeof v != 'undefined') {
+			a.push({name: n, value: v});
+		}
+	}
+
+	if (!semantic && form.clk) {
+		// input type=='image' are not found in elements array! handle it here
+		var $input = $(form.clk), input = $input[0];
+		n = input.name;
+		if (n && !input.disabled && input.type == 'image') {
+			a.push({name: n, value: $input.val()});
+			a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+		}
+	}
+	return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+	//hand off to jQuery.param for proper encoding
+	return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+	var a = [];
+	this.each(function() {
+		var n = this.name;
+		if (!n) {
+			return;
+		}
+		var v = $.fieldValue(this, successful);
+		if (v && v.constructor == Array) {
+			for (var i=0,max=v.length; i < max; i++) {
+				a.push({name: n, value: v[i]});
+			}
+		}
+		else if (v !== null && typeof v != 'undefined') {
+			a.push({name: this.name, value: v});
+		}
+	});
+	//hand off to jQuery.param for proper encoding
+	return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set.  For example, consider the following form:
+ *
+ *  <form><fieldset>
+ *	  <input name="A" type="text" />
+ *	  <input name="A" type="text" />
+ *	  <input name="B" type="checkbox" value="B1" />
+ *	  <input name="B" type="checkbox" value="B2"/>
+ *	  <input name="C" type="radio" value="C1" />
+ *	  <input name="C" type="radio" value="C2" />
+ *  </fieldset></form>
+ *
+ *  var v = $(':text').fieldValue();
+ *  // if no values are entered into the text inputs
+ *  v == ['','']
+ *  // if values entered into the text inputs are 'foo' and 'bar'
+ *  v == ['foo','bar']
+ *
+ *  var v = $(':checkbox').fieldValue();
+ *  // if neither checkbox is checked
+ *  v === undefined
+ *  // if both checkboxes are checked
+ *  v == ['B1', 'B2']
+ *
+ *  var v = $(':radio').fieldValue();
+ *  // if neither radio is checked
+ *  v === undefined
+ *  // if first radio is checked
+ *  v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true.  If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array.  If no valid value can be determined the
+ *	   array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+	for (var val=[], i=0, max=this.length; i < max; i++) {
+		var el = this[i];
+		var v = $.fieldValue(el, successful);
+		if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+			continue;
+		}
+		v.constructor == Array ? $.merge(val, v) : val.push(v);
+	}
+	return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+	var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+	if (successful === undefined) {
+		successful = true;
+	}
+
+	if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+		(t == 'checkbox' || t == 'radio') && !el.checked ||
+		(t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+		tag == 'select' && el.selectedIndex == -1)) {
+			return null;
+	}
+
+	if (tag == 'select') {
+		var index = el.selectedIndex;
+		if (index < 0) {
+			return null;
+		}
+		var a = [], ops = el.options;
+		var one = (t == 'select-one');
+		var max = (one ? index+1 : ops.length);
+		for(var i=(one ? index : 0); i < max; i++) {
+			var op = ops[i];
+			if (op.selected) {
+				var v = op.value;
+				if (!v) { // extra pain for IE...
+					v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+				}
+				if (one) {
+					return v;
+				}
+				a.push(v);
+			}
+		}
+		return a;
+	}
+	return $(el).val();
+};
+
+/**
+ * Clears the form data.  Takes the following actions on the form's input fields:
+ *  - input text fields will have their 'value' property set to the empty string
+ *  - select elements will have their 'selectedIndex' property set to -1
+ *  - checkbox and radio inputs will have their 'checked' property set to false
+ *  - inputs of type submit, button, reset, and hidden will *not* be effected
+ *  - button elements will *not* be effected
+ */
+$.fn.clearForm = function() {
+	return this.each(function() {
+		$('input,select,textarea', this).clearFields();
+	});
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function() {
+	return this.each(function() {
+		var t = this.type, tag = this.tagName.toLowerCase();
+		if (t == 'text' || t == 'password' || tag == 'textarea') {
+			this.value = '';
+		}
+		else if (t == 'checkbox' || t == 'radio') {
+			this.checked = false;
+		}
+		else if (tag == 'select') {
+			this.selectedIndex = -1;
+		}
+	});
+};
+
+/**
+ * Resets the form data.  Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+	return this.each(function() {
+		// guard against an input with the name of 'reset'
+		// note that IE reports the reset function as an 'object'
+		if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+			this.reset();
+		}
+	});
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+	if (b === undefined) {
+		b = true;
+	}
+	return this.each(function() {
+		this.disabled = !b;
+	});
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+	if (select === undefined) {
+		select = true;
+	}
+	return this.each(function() {
+		var t = this.type;
+		if (t == 'checkbox' || t == 'radio') {
+			this.checked = select;
+		}
+		else if (this.tagName.toLowerCase() == 'option') {
+			var $sel = $(this).parent('select');
+			if (select && $sel[0] && $sel[0].type == 'select-one') {
+				// deselect all other options
+				$sel.find('option').selected(false);
+			}
+			this.selected = select;
+		}
+	});
+};
+
+// helper fn for console logging
+// set $.fn.ajaxSubmit.debug to true to enable debug logging
+function log() {
+	if ($.fn.ajaxSubmit.debug) {
+		var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+		if (window.console && window.console.log) {
+			window.console.log(msg);
+		}
+		else if (window.opera && window.opera.postError) {
+			window.opera.postError(msg);
+		}
+	}
+};
+
+})(jQuery);
+
+
+/* =======================
+   ====== IMODAL.JS ======
+   ======================= */
+
+/*
+ * Interspire Modal 1.0
+ * (c) 2008 Interspire Pty. Ltd.
+ *
+ * Based on SimpleModal 1.1.1 - jQuery Plugin
+ * http://www.ericmmartin.com/projects/simplemodal/
+ * http://plugins.jquery.com/project/SimpleModal
+ * http://code.google.com/p/simplemodal/
+ *
+ * Copyright (c) 2007 Eric Martin - http://ericmmartin.com
+ *
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * and GPL (GPL-LICENSE.txt) licenses.
+ *
+ * Revision: $Id$
+ *
+ */
+(function ($) {
+	$.iModal = function(options) {
+		return $.iModal.modal.init(options);
+	};
+
+	$.modal = function() {
+	};
+
+	$.modal.close = function () {
+		return $.iModal.modal.close(true);
+	};
+
+	$.iModal.close = function () {
+		return $.iModal.modal.close(true);
+	};
+
+	$.fn.iModal = function (options) {
+		options = $.extend({}, {
+			type: 'inline',
+			inline: $(this).html()
+		}, options);
+		return $.iModal.modal.init(options);
+	};
+
+	$.iModal.defaults = {
+		overlay: 40,
+		overlayCss: {},
+		containerCss: {},
+		close: true,
+		closeTitle: 'Close',
+		closeTxt: false,
+		onOpen: null,
+		onShow: null,
+		onClose: null,
+		onBeforeClose: null,
+		onAjaxError: null,
+		type: 'string',
+		width: '750',
+		height: 'auto',
+		buttons: '',
+		title: '',
+		method: 'get',
+		top: '15%'
+	};
+
+	$.iModal.modal = {
+		options: null,
+		init: function(options) {
+			// Can\'t have more than one modal window open at a time
+			if($('#ModalContentContainer').length > 0) {
+				return this;
+			}
+			this.options = $.extend({}, $.iModal.defaults, options);
+
+			if(this.options.type == 'inline') {
+				this.options.data = $(this.options.inline).html();
+				$(this.options.inline).html('');
+			}
+
+			this.generateModal();
+			return this;
+		},
+
+		checkHeight: function() {
+			var winHeight = $(window).height(),
+				modalHeight = $("#ModalContentContainer").height(),
+				top;
+
+			if ((modalHeight > winHeight * .85) ||
+					(($.iModal.modal.options.scrollable) && ((winHeight * .85) < $.iModal.modal.options.height))){
+				// modal height spans below the fold
+
+				// use 15% of the remaining win height as top
+				top = Math.max(0, (winHeight - modalHeight) * 0.15);
+
+				// this stays until window height changes
+				top += $(window).scrollTop();
+				$("#ModalContainer").css({
+					position: 'absolute',
+					top: (top + 'px')
+				});
+
+				//if the window height is less than modal height, show smaller modal with scroll
+				if ($.iModal.modal.options.scrollable) {
+					if ((winHeight * .85) < $.iModal.modal.options.height){
+						var diff = $.iModal.modal.options.height - $.iModal.modal.options.contentHeight;
+						$("#ModalContent").css({
+							overflow: 'auto',
+							height: ((winHeight - diff) * .75)+'px'
+						});
+
+						$("#ModalContainer").css({height: (winHeight * .80) +'px'});
+						$(".ModalButtonRow").css('padding-right', '30px');
+
+
+					}
+					else if ($.iModal.modal.options.height < modalHeight){
+						$("#ModalContent").css({
+							overflow: 'auto',
+							height: $.iModal.modal.options.contentHeight+'px'
+						});
+
+						$("#ModalContainer").css({height: $.iModal.modal.options.height +'px'});
+						$(".ModalButtonRow").css('padding-right', '15px');
+					}
+					else if ((winHeight * .85) < modalHeight)
+					{
+						var diff = $.iModal.modal.options.height - $.iModal.modal.options.contentHeight;
+						$("#ModalContent").css({
+							overflow: 'auto',
+							height: ((modalHeight -diff) * .75)+'px'});
+						$("#ModalContainer").css({height: (modalHeight * .80)+'px'});
+						$(".ModalButtonRow").css('padding-right', '30px');
+					}
+				}
+			}
+			else {
+				$("#ModalContainer").css({
+					position: 'absolute',
+					top: '15%'
+				});
+
+				if ($.iModal.modal.options.scrollable) {
+					$("#ModalContainer").css({height: $.iModal.modal.options.height +'px'});
+					$("#ModalContent").css({height: $.iModal.modal.options.contentHeight +'px'});
+					$(".ModalButtonRow").css('padding-right', '15px');
+				}
+			}
+		},
+
+		ajaxError: function(xhr, status, error)
+		{
+			this.hideLoader();
+			if ($.isFunction(this.options.onAjaxError)) {
+				this.options.onAjaxError.apply(this, [xhr, status, error]);
+			}
+		},
+
+		createFrame: function(container, html)
+		{
+	    	var frame = $('<iframe />').width('100%').attr('frameBorder', '0').appendTo(container)[0];
+
+			// Grab the frame's document object
+	    	var frameDoc = frame.contentWindow ? frame.contentWindow.document : frame.contentDocument;
+	    	frameDoc.open(); frameDoc.write(html); frameDoc.close();
+
+			// Auto adjust the iframe's height to the height of the content
+			$(frameDoc).ready(function(){
+				var height = frameDoc.body.scrollHeight + 20;
+
+				$(frame).height(height);
+			});
+		},
+
+		displayModal: function(data)
+		{
+			if (typeof data == 'object' && typeof data.imodal == 'string') {
+				// this allows imodal to recognise an object (json) response so long as the response contains an imodal
+				// string property
+				data = data.imodal;
+			}
+
+			this.hideLoader();
+			modalContent = '';
+			if(!$.browser.msie || $.browser.version >= 7) {
+				modalContent = '';
+			}
+			if(data.indexOf('ModalTitle')>0 && data.indexOf('ModalContent')>0){
+				modalContent += '<div id="ModalContentContainer">'+data+'</div>';
+			}else{
+				buttons = '';
+				if(this.options.buttons) {
+					buttons = '<div class="ModalButtonRow">'+this.options.buttons+'</div>';
+				}
+				modalContent += '<div id="ModalContentContainer"><div class="ModalTitle">'+this.options.title+'</div><div class="ModalContent">'+data+ '</div>'+buttons+'</div>';
+			}
+
+			cssProperties = {
+				position: 'absolute',
+				zIndex: 3100,
+				width: this.options.width+'px',
+				height: this.options.height+'px'
+			};
+
+			if($.browser.msie && $.browser.version < 7) {
+				cssProperties.position = 'absolute';
+			}
+
+			// If direction is rtl then we need to flip our margin positions
+			if ($.browser.msie && $.browser.version <= 7 && $('body').css('direction') == 'rtl') {
+				cssProperties.marginRight = (this.options.width/2)+'px';
+			} else {
+				cssProperties.marginLeft = '-'+(this.options.width/2)+'px';
+			}
+
+			cssProperties.top = this.options.top;
+
+			var stupidity = $('<div>')
+				.attr('id', 'ModalContainer')
+				.addClass('modalContainer')
+				.css(cssProperties)
+				.hide()
+				.appendTo('body')
+				.html('<div class="modalData">'+modalContent+'</div>');
+
+
+            if(this.options.className) {
+                stupidity.addClass(this.options.className);
+            }
+			if($('#ModalContainer').find('.ModalButtonRow, #ModalButtonRow').length > 0) {
+				$('#ModalContainer').addClass('ModalContentWithButtons');
+			}
+			if(this.options.close) {
+				modal = this;
+				$('<a/>')
+					.addClass('modalClose')
+					.html('<i class="icon-remove"></i>')
+					.attr('title', this.options.closeTitle)
+					.appendTo('#ModalContainer')
+					.click(function(e) {
+						e.preventDefault();
+						modal.close();
+					})
+				;
+				$(document).bind('keypress', function(e) {
+					if(e.keyCode == 27) {
+						$('#ModalContainer .modalClose').click();
+					}
+				});
+
+				if (this.options.closeTxt) {
+					$('#ModalContainer .modalClose')
+						.html(this.options.closeTitle)
+						.css('backgroundPosition', '65px 0')
+						.css('lineHeight', '15px')
+						.css('textDecoration', 'none')
+						.css('width', '60px')
+						.css('paddingRight', '20px')
+						.css('textAlign', 'right')
+					;
+					$('#ModalContainer .ModalTitle')
+						.css('borderBottom', 'medium none')
+						.css('backgroundColor', '#fff')
+					;
+					$('#ModalContainer #ModalTopBorder').css('backgroundImage', 'none');
+				}
+			}
+
+			if($.isFunction(this.options.onOpen)) {
+				this.options.onOpen.apply(this);
+			}
+			else {
+				$('#ModalContainer').show();
+				if($.isFunction(this.options.onShow)) {
+					this.options.onShow.apply(this);
+				}
+			}
+
+			if (this.options.scrollable) {
+				var container = $("#ModalContent");
+				container.css('overflow', 'auto');
+				$(".ModalButtonRow").css('padding-top', '10px');
+
+				this.checkHeight();
+			}
+
+			// make sure we can see the bottom part of the modal
+			// if the window size is too short
+
+			/*$(window)
+				.resize(this.checkHeight)
+				.scroll(this.checkHeight)
+			;*/
+		},
+
+		showLoader: function()
+		{
+			$('<div/>')
+				.attr('id', 'ModalLoadingIndicator')
+				.html('<i class="icon-spinner"></i>')
+				.appendTo('body');
+			;
+		},
+
+		showOverlayLoader: function(){
+			$('<div/>')
+				.attr('id', 'ModalOverlay')
+				.addClass('modalOverlay')
+				.css({
+					opacity: 40 / 100,
+					height: '100%',
+					width: '100%',
+					position: 'fixed',
+					left: 0,
+					top: 0,
+					zIndex: 3000
+				})
+				.appendTo('body')
+			;
+
+			$('<div/>')
+				.attr('id', 'ModalLoadingIndicator')
+				.appendTo('body');
+			;
+		},
+
+		hideOverlayLoader: function(){
+			$('#ModalLoadingIndicator').remove();
+			$('.modalOverlay').remove();
+		},
+
+		hideLoader: function()
+		{
+			$('#ModalLoadingIndicator').remove();
+		},
+
+		generateModal: function()
+		{
+			$('<div/>')
+				.attr('id', 'ModalOverlay')
+				.addClass('modalOverlay')
+				.css({
+					opacity: this.options.overlay / 100,
+					height: '100%',
+					width: '100%',
+					position: 'absolute',
+					left: 0,
+					top: 0,
+					zIndex: 3000
+				})
+				.appendTo('body')
+			;
+
+			if($.browser.msie && $.browser.version < 7) {
+				wHeight = $(document.body).height()+'px';
+				wWidth = $(document.body).width()+'px';
+				$('#ModalOverlay').css({
+					position: 'absolute',
+					height: wHeight,
+					width: wWidth
+				});
+				$('<iframe/>')
+					.attr('src', 'javascript:false;')
+					.attr('id', 'ModalTempiFrame')
+					.css({opacity: 0, position: 'absolute', width: wWidth, height: wHeight, zIndex: 1000, top: 0, left: 0})
+					.appendTo('body')
+				;
+			}
+
+			this.showLoader();
+			if(this.options.type == 'ajax') {
+				modal = this;
+				data = {};
+				if(this.options.urlData != undefined) {
+					data = this.options.urlData;
+				}
+				var method = 'get';
+				if (this.options.method) {
+					method = this.options.method;
+				}
+				$.ajax({
+					url: this.options.url,
+					type: method,
+					success: function(data) {
+						modal.displayModal(data);
+					},
+					error: function(xhr, status, error) {
+						modal.ajaxError(xhr, status, error);
+					},
+					data: data,
+					type: this.options.method,
+					global: false
+				});
+			}
+			else if(this.options.type == 'iframe'){
+				modal = this;
+				data = {};
+				if(this.options.urlData != undefined) {
+					data = this.options.urlData;
+				}
+				var method = 'get';
+				if (this.options.method) {
+					method = this.options.method;
+				}
+				$.ajax({
+					url: this.options.url,
+					type: method,
+					success: function(data) {
+						modal.displayModal('');
+						var f = modal.createFrame($('#ModalContentContainer .ModalContent'), data);
+					},
+					error: function(xhr, status, error) {
+						modal.ajaxError(xhr, status, error);
+					},
+					data: data,
+					type: this.options.method,
+					global: false
+				});
+			}
+			else {
+				this.displayModal(this.options.data);
+			}
+		},
+
+		close: function(external)
+		{
+			if (!this.options) {
+				return;
+			}
+
+			if($.isFunction(this.options.onBeforeClose)) {
+				if (this.options.onBeforeClose.apply(this, []) === false) {
+					// prevent modal from closing if onBeforeClose returns (bool)false
+					return;
+				}
+				this.options.onBeforeClose = null; // ISC-3837
+			}
+
+			if(this.options.type == 'inline') {
+				$(this.options.inline).html(this.options.data);
+			}
+
+			if($.isFunction(this.options.onClose) && !external) {
+				this.options.onClose.apply(this);
+			}
+			else {
+				$('#ModalContainer').remove();
+			}
+
+			$('#ModalLoadingIndicator').remove();
+			$('#ModalOverlay').remove();
+			$('#ModalTempiFrame').remove();
+
+			return false;
+		}
+	};
+})(jQuery);
+
+
+function ModalBox(title, content){
+	var str = '<div class="ModalTitle">'+title+'</div><div class="ModalContent">'+content+ '</div><div class="ModalButtonRow"></div>';
+	$.iModal({ data: str });
+}
+
+function ModalBoxInline(title, content, width, withCloseButton){
+	if(typeof(width) == 'undefined'){
+		var width = 800;
+	}
+	if(typeof(withCloseButton) == 'undefined'){
+		var withCloseButton = false;
+	}
+	if(withCloseButton){
+		var str = '<div class="ModalTitle">'+title+'</div><div class="ModalContent">'+$(content).html()+ '</div><div class="ModalButtonRow"></div>';
+	}else{
+		var str = '<div class="ModalTitle">'+title+'</div><div class="ModalContent">'+$(content).html()+ '</div><div class="ModalButtonRow"><input type="button" class="CloseButton FormButton" value="Close Window" onclick="$.iModal.close();" /></div>';
+	}
+	$.iModal({ 'data': str, 'width':width });
+}
+
+
+/* =====================
+   ====== CART.JS ======
+   ===================== */
+
+var Cart = {
+	ToggleShippingEstimation: function()
+	{
+		$('.EstimatedShippingMethods').hide(250);
+
+		if($('.EstimateShipping').is(':hidden')) {
+			$('.EstimateShippingLink').hide();
+			$('.EstimateShipping').slideDown(250);
+		}
+		else {
+			$('.EstimateShipping').slideUp(250,function(){
+				$('.EstimateShippingLink').fadeIn(250);
+			});
+		}
+
+		$('.EstimateShipping select:eq(0)').focus();
+
+		return false;
+	},
+
+	EstimateShipping: function()
+	{
+		if ($('#shippingZoneCountry').val() == 0) {
+			alert(lang.SelectCountry);
+			$('#shippingZoneCountry').focus();
+			return;
+		}
+
+		if ($('#shippingZoneState').is(':visible') && $('#shippingZoneState').val() == 0) {
+			alert(lang.SelectState);
+			$('#shippingZoneState').focus();
+			return;
+		}
+
+		if ($.trim($('#shippingZoneZip').val()) == '') {
+			alert(lang.EnterZip);
+			$('#shippingZoneZip').focus();
+			return;
+		}
+
+		$('.EstimatedShippingMethods').hide();
+		$('.EstimateShipping .EstimateShippingButtons span').hide();
+		$('.EstimateShipping .EstimateShippingButtons input')
+			.data('oldVal', $('.EstimateShipping .EstimateShippingButtons input').val())
+			.val(lang.Calculating)
+			.attr('disabled', true)
+		;
+		$.ajax({
+			url: 'remote.php',
+			type: 'post',
+			data: {
+				w: 'getShippingQuotes',
+				countryId: $('#shippingZoneCountry').val(),
+				stateId: $('#shippingZoneState').val(),
+				stateName: escape($('#shippingZoneStateName').val()),
+				zipCode: $('#shippingZoneZip').val()
+			},
+			success: function(data)
+			{	
+				$('.EstimatedShippingMethods .ShippingMethodList').html(data);
+
+				$('.EstimatedShippingMethods .ShippingMethodList table').addClass('twelve');
+				$('.EstimatedShippingMethods .ShippingMethodList .Submit input').addClass('button');
+
+				$('.EstimatedShippingMethods').show(250);
+				$('.EstimateShipping .EstimateShippingButtons span').show(250);
+				$('.EstimateShipping .EstimateShippingButtons input')
+					.val($('.EstimateShipping .EstimateShippingButtons input').data('oldVal'))
+					.attr('disabled', false)
+				;
+			}
+		});
+	},
+
+	ToggleShippingEstimateCountry: function()
+	{
+		var countryId = $('#shippingZoneCountry').val();
+		$.ajax({
+			url: 'remote.php',
+			type: 'post',
+			data: 'w=countryStates&c='+countryId,
+			success: function(data)
+			{
+				$('#shippingZoneState option:gt(0)').remove();
+				var states = data.split('~');
+				var numStates = 0;
+				for(var i =0; i < states.length; ++i) {
+					vals = states[i].split('|');
+					if(!vals[0]) {
+						continue;
+					}
+					$('#shippingZoneState').append('<option value="'+vals[1]+'">'+vals[0]+'</option>');
+					++numStates;
+				}
+
+				$('#s2id_shippingZoneState .select2-choice span').text('Choose a State');
+
+				if(numStates == 0) {
+					$('#shippingZoneState').hide();
+					$('#shippingZoneStateName').show();
+					$('#shippingZoneStateRequired').hide();
+
+					$('#s2id_shippingZoneState').hide();
+				}
+				else {
+					$('#shippingZoneState').show();
+					$('#shippingZoneStateName').hide();
+					$('#shippingZoneStateRequired').show();
+
+					$('#s2id_shippingZoneState').show();
+				}
+
+				$('#shippingZoneState').val('0');
+			}
+		});
+	},
+
+	UpdateShippingCost: function()
+	{
+		var returnVal = true;
+		var method = $('.EstimatedShippingMethods table').each(function() {
+			var method = $('input[type=radio]:checked', this).val();
+			if(typeof(method) == 'undefined' || method == '') {
+				alert(lang.ChooseShippingMethod);
+				$('input[type=radio]:eq(0)', this).focus();
+				returnVal = false;
+				return returnVal;
+			}
+		});
+
+		if(returnVal == false) {
+			return returnVal;
+		}
+
+		$('#cartForm').submit();
+	},
+
+	RemoveItem: function(itemId)
+	{
+		if(confirm(lang.CartRemoveConfirm)) {
+			document.location.href = "cart.php?action=remove&item="+itemId;
+		}
+	},
+
+	UpdateQuantity: function()
+	{
+		$('#cartForm').submit();
+	},
+
+	ValidateQuantityForm: function(form)
+	{
+		var valid = true;
+		var qtyInputs = $(form).find('input.qtyInput');
+		qtyInputs.each(function() {
+			if(isNaN($(this).val()) || $(this).val() < 0) {
+				alert(lang.InvalidQuantity);
+				this.focus();
+				this.select();
+				valid = false;
+				return false;
+			}
+		});
+		if(valid == false) {
+			return false;
+		}
+
+		return true;
+	},
+
+	CheckCouponCode: function()
+	{
+		if($('#couponcode').val() == '') {
+			alert(lang.EnterCouponCode);
+			$('#couponcode').focus();
+			return false;
+		}
+	},
+
+	CheckGiftCertificateCode: function()
+	{
+		if($('#giftcertificatecode').val() == '') {
+			alert(lang.EnterGiftCertificateCode);
+			$('#giftcertificatecode').focus();
+			return false;
+		}
+	},
+
+	ManageGiftWrapping: function(itemId)
+	{
+		$.iModal({
+			type: 'ajax',
+			url: 'remote.php?w=selectGiftWrapping&itemId='+itemId
+		});
+	},
+
+	ToggleGiftWrappingType: function(option)
+	{
+		if($(option).hasClass('HasPreview')) {
+			$('.GiftWrappingPreviewLinks').hide();
+			$('#GiftWrappingPreviewLink'+$(option).val()).show();
+		}
+		else {
+			$('.GiftWrappingPreviewLinks').hide();
+		}
+
+		if($(option).hasClass('AllowComments')) {
+			$(option).parents('.WrappingOption').find('.WrapComments').show();
+		}
+		else {
+			$(option).parents('.WrappingOption').find('.WrapComments').hide();
+		}
+	},
+
+	ToggleMultiWrapping: function(value)
+	{
+		if(value == 'same') {
+			$('.WrappingOptionsSingle').show();
+			$('.WrappingOptionsMultiple').hide();
+		}
+		else {
+			$('.WrappingOptionsSingle').hide();
+			$('.WrappingOptionsMultiple').show();
+		}
+	},
+
+	RemoveGiftWrapping: function(itemId)
+	{
+		if(confirm(lang.ConfirmRemoveGiftWrapping)) {
+			return true;
+		}
+		else {
+			return false;
+		}
+	},
+
+	ShowEditOptionsInCartForm: function(itemId)
+	{
+		var modalOptions = {
+			type: 'ajax',
+			url: 'remote.php?w=editconfigurablefieldsincart&itemid='+itemId
+		};
+
+		if (typeof config == 'object' && config.isMobile) {
+			modalOptions.width = 300;
+		}
+
+		$.iModal(modalOptions);
+	},
+
+	saveItemCustomizations: function()
+	{
+		if (!CheckProductConfigurableFields($('#CartEditProductFieldsForm'))) {
+			return false;
+		}
+
+		// validate the attributes
+		var attributesValidated = $('#CartEditProductFieldsForm')
+			.validate()
+			.form();
+
+		if (!attributesValidated) {
+			return false;
+		}
+
+		return true;
+	},
+
+	DeleteUploadedFile: function(fieldid, itemid)
+	{
+		if(confirm(lang.DeleteProductFieldFileConfirmation)) {
+			$.ajax({
+				url: 'remote.php',
+				type: 'post',
+				data: 'w=deleteuploadedfileincart&field='+fieldid+'&item='+itemid,
+				success: function(data) {
+					document.getElementById('CurrentProductFile_'+fieldid).value = '';
+					$('#CartFileName_'+fieldid).hide();
+				}
+			});
+		}
+		return;
+	},
+
+	ReloadCart: function()
+	{
+		window.location = "cart.php";
+	}
+
+};
\ No newline at end of file
diff --git a/template/js/template.js b/template/js/template.js
old mode 100755
new mode 100644
index 5da6e6b..8c42398
--- a/template/js/template.js
+++ b/template/js/template.js
@@ -1,5 +1,4 @@
 // FEATURE SETTINGS DEFAULTS
-if(typeof googleExperimentsActive === "undefined") var googleExperimentsActive = false;
 if(typeof topBarEvenSpacing === "undefined") var topBarEvenSpacing = false;
 if(typeof topBarLastItem === "undefined") topBarLastItem = $('.top-bar .category-list > li:last-child');
 if(typeof topBarAllLinks === "undefined") topBarAllLinks = $('.top-bar .category-list > li > a');
@@ -19,6 +18,11 @@ var windowWidth = function() {
 // REMOVE ROW DIVIDERS
 $('.subcat-grid .RowDivider').remove();
 
+// HIDE EMPTY ITEMS
+$('.hide-empty-last-child > *:last-child').each(function(){ 
+	if($.trim($(this).text()) == '') $(this).hide();
+});
+
 $(document).ready(function(){
 	// TOOLTIPS - clear empty
 	$('.empty-tip').each(function(){if($(this).attr('title') == "") $(this).replaceWith($(this).html());});
@@ -297,22 +301,6 @@ var waitForFinalEvent = (function () {
   };
 })();
 
-// GOOGLE EXPERIMENTS CSS INCLUDER
-if(googleExperimentsActive)
-{
-	var experimentNum = location.hash.match(/#(\w+)/)[1];
-	if(!isNaN(experimentNum) && $('#experimentCss').length == 0)
-	{
-	    var css  = document.createElement('link');
-	    css.id = 'experimentCss';
-	    css.rel  = 'stylesheet';
-	    css.type = 'text/css';
-	    css.media = 'all';
-	    css.href = '%%GLOBAL_TPL_PATH%%/Styles/exp_'+experimentNum+'.css';
-	    $('head').append(css);
-	}
-}
-
 
 //////////////////////////////////
 // CALL / BIND HELPER FUNCTIONS //
@@ -327,8 +315,8 @@ $(document).ready(function(){
 	prepareMenu();
 	prepareCarousel();
 	
-	$(".slide-heading").fitText(1.4);
-	$(".slide-text").fitText(3);
+	$(".slide-heading").fitText(1.5);
+	$(".slide-text").fitText(2);
 });
 
 // HELPER / PLUGIN CALLS ON LOAD (after images)
@@ -341,6 +329,22 @@ $(window).load(function() {
 	productPageEvenImages();
 });
 
+if($('body').hasClass('facets')) {
+	var $noProdsAlert = $('<div class="alert-box no-prods-alert"><div>No products match those criteria.</div><a href="" class="close">&times;</a></div>');
+	$(document).ajaxComplete(function() {
+		if($('section.main .ProductList li').length == 0) {
+			$('section.main .ProductList').before($noProdsAlert);
+			$noProdsAlert.show();
+			$('.ProductCompareSelectedButton,.SortBox').hide();
+		} else {
+			$noProdsAlert.remove();
+			$('.ProductCompareSelectedButton,.SortBox').show();
+			productGridEvenImages();
+			productGridEvenBoxes();
+		}
+	});
+}
+
 // BIND HELPER FUNCTION CALLS TO WINDOW RESIZE
 $(window).resize(function () {
 	waitForFinalEvent(function(){
@@ -375,7 +379,12 @@ var prepareMenu = function() {
 	$('.nav > ul > li:last').addClass('last-category-menu-link');
 	
 	if($('.nav > ul').length == 0) $('.nav').append('<ul></ul>'); // add UL if there is no category menu
-	$('.nav > ul').append( $('.nav .page-menu-link') );
+	
+	// move page menu links into main <ul>
+	if($(".toggleMenu").next().is('.page-menu-link'))
+		$('.nav > ul:first').prepend( $('.nav .page-menu-link') );
+	else
+		$('.nav > ul:first').append( $('.nav .page-menu-link') );
 
 	// adjustments for menus with dropdowns
 	$(".nav li a").each(function() {
diff --git a/template/login.html b/template/login.html
old mode 100755
new mode 100644
diff --git a/template/maintenance.html b/template/maintenance.html
old mode 100755
new mode 100644
diff --git a/template/message.html b/template/message.html
old mode 100755
new mode 100644
diff --git a/template/news.html b/template/news.html
old mode 100755
new mode 100644
diff --git a/template/newsletter_subscribe.html b/template/newsletter_subscribe.html
old mode 100755
new mode 100644
diff --git a/template/nmi.html b/template/nmi.html
new file mode 100644
index 0000000..84ad395
--- /dev/null
+++ b/template/nmi.html
@@ -0,0 +1,49 @@
+<p class="InfoMessage Message">
+	%%LNG_NMIPaymentIntro%%
+</p>
+<p class="ErrorMessage Message" style="display:%%GLOBAL_HideNMIError%%">
+	%%LNG_NMIProcessingError%%<br />
+	<strong>%%GLOBAL_NMIErrorMessage%%</strong>
+</p>
+<form action="%%GLOBAL_ShopPathSSL%%/checkout.php?action=process_payment" method="post" onsubmit="return check_NMI_payment_form()">
+	<div class="FormContainer HorizontalFormContainer">
+		<dl>
+			<dt><span class="Required">*</span> %%LNG_NMICardHoldersName%%:</dt>
+			<dd><input type="text" name="NMI_name" id="NMI_name" value="%%GLOBAL_NMIName%%" size="30" /></dd>
+
+			<dt><span class="Required">*</span> %%LNG_NMICreditCardNo%%:</dt>
+			<dd>
+				<input type="text" name="NMI_ccno" id="NMI_ccno" value="%%GLOBAL_NMINum%%" size="30" />
+				<br />
+				<small>%%LNG_NMICreditCardNoHelp%%</small>
+			</dd>
+
+			<dt><span class="Required">*</span> %%LNG_NMIExpirationDate%%:</dt>
+			<dd>
+				<select name="NMI_ccexpm" id="NMI_ccexpm">
+					<option value=""></option>
+					%%GLOBAL_NMIMonths%%
+				</select>
+				<select name="NMI_ccexpy" id="NMI_ccexpy">
+					<option value=""></option>
+					%%GLOBAL_NMIYears%%
+				</select>
+			</dd>
+
+			<dt style="display: %%GLOBAL_NMIHideCVV2%%"><span class="Required">*</span> %%LNG_NMICreditCardCCV2%%:</dt>
+			<dd id="CVV2Input" style="display: %%GLOBAL_NMIHideCVV2%%">
+				<input type="text" class="Textbox" name="NMI_cccode" id="cc_cvv2" value="%%GLOBAL_NMICCV2%%" size="4" />
+				&nbsp;<small><a href="#" id="CVV2Help">%%LNG_WhatsThis%%</a></small>
+			</dd>
+
+			<dt>&nbsp;&nbsp; %%LNG_NMITotalAmount%%:</dt>
+			<dd>
+				<em class="ProductPrice">%%GLOBAL_OrderAmount%%</em>
+			</dd>
+		</dl>
+		<p class="Submit">
+			<input type="submit" value="%%LNG_NMIPayForOrder%%" />
+		</p>
+	</div>
+</form>
+%%Panel.NMIPaymentJavaScript%%
diff --git a/template/order.html b/template/order.html
old mode 100755
new mode 100644
index 16bec59..5793fc3
--- a/template/order.html
+++ b/template/order.html
@@ -22,7 +22,7 @@
 			</p>
 			
 			<p style="display:%%GLOBAL_HideDigitalOrderDownloadLink%%">
-				<a href="%%GLOBAL_ShopPath%%/orderstatus.php">%%LNG_DownloadTheItemsYouOrdered%%</a>
+				<a href="%%GLOBAL_ViewFullOrderPath%%">%%LNG_DownloadTheItemsYouOrdered%%</a>
 			</p>
 		</div>
 
diff --git a/template/packing_slip_print.html b/template/packing_slip_print.html
index f4adf4f..1b745ed 100644
--- a/template/packing_slip_print.html
+++ b/template/packing_slip_print.html
@@ -1,4 +1,4 @@
-<link rel="stylesheet" href="%%GLOBAL_AppPath%%/template/Styles/printinvoice.css" type="text/css">
+<link rel="stylesheet" href="%%ASSET_Styles/printinvoice.css%%" type="text/css">
 <div id="Logo">
 	%%GLOBAL_HeaderLogo%%
 </div>
@@ -79,4 +79,4 @@
 			%%GLOBAL_Comments%%
 		</blockquote>
 	</div>
-</div>
\ No newline at end of file
+</div>
diff --git a/template/page.html b/template/page.html
old mode 100755
new mode 100644
diff --git a/template/page_contact_form.html b/template/page_contact_form.html
old mode 100755
new mode 100644
diff --git a/template/product.html b/template/product.html
old mode 100755
new mode 100644
index 4956585..78afef0
--- a/template/product.html
+++ b/template/product.html
@@ -5,7 +5,7 @@
 %%Panel.Header%%
 
 <!-- product page stylesheets -->
-<link rel="stylesheet" type="text/css" href="%%GLOBAL_AppPath%%/javascript/jquery/themes/cupertino/ui.all.css?%%GLOBAL_JSCacheToken%%">
+<link rel="stylesheet" type="text/css" href="%%GLOBAL_CdnAppPath%%/javascript/jquery/themes/cupertino/ui.all.css?%%GLOBAL_JSCacheToken%%">
 
 <section class="main">
 	%%Panel.MainGridTopWide%%
@@ -46,4 +46,4 @@
 <!-- product page scripts -->
 %%Panel.ProductJavaScript%%
 
-%%Panel.HTMLFoot%%
\ No newline at end of file
+%%Panel.HTMLFoot%%
diff --git a/template/product_comments.html b/template/product_comments.html
old mode 100755
new mode 100644
diff --git a/template/product_video.html b/template/product_video.html
old mode 100755
new mode 100644
diff --git a/template/productimage.html b/template/productimage.html
old mode 100755
new mode 100644
index f3373ba..a1cbd01
--- a/template/productimage.html
+++ b/template/productimage.html
@@ -4,7 +4,7 @@
 		<link href="%%GLOBAL_popupCssPath%%" type="text/css" rel="stylesheet" />
 		<script type="text/javascript" src="%%GLOBAL_jQueryPath%%"></script>
 		<title>%%GLOBAL_ProductName%%</title>
-		<script type="text/javascript" src="%%GLOBAL_ShopPath%%/javascript/jquery/plugins/jCarousel/jCarousel.js?%%GLOBAL_JSCacheToken%%"></script>
+		<script type="text/javascript" src="%%GLOBAL_CdnAppPath%%/javascript/jquery/plugins/jCarousel/jCarousel.js?%%GLOBAL_JSCacheToken%%"></script>
 
 		<script type="text/javascript">//<![CDATA[
 			var ThumbURLs = new Array();
@@ -130,7 +130,7 @@
 				$(".ProductZoomImage").width(width);
 				$(".ProductZoomImage").height(height);
 
-				$(".ProductZoomImage").html('<img src="'+imagePreloader.src+'"  width="'+width+'" height="'+height+'" alt="'+ImageDescriptions[currentImageIndex]+'" />');
+				$(".ProductZoomImage").html('<img src="'+imagePreloader.src+'"  width="'+width+'" height="'+height+'" alt="'+ImageDescriptions[currentImageIndex]+'">');
 
 			}
 
@@ -230,4 +230,4 @@
 	<body>
 		%%Panel.ProductImagePopup%%
 	</body>
-</html>
\ No newline at end of file
+</html>
diff --git a/template/search.html b/template/search.html
old mode 100755
new mode 100644
diff --git a/template/search_tips.html b/template/search_tips.html
old mode 100755
new mode 100644
diff --git a/template/search_with_facets.html b/template/search_with_facets.html
new file mode 100644
index 0000000..720193a
--- /dev/null
+++ b/template/search_with_facets.html
@@ -0,0 +1,28 @@
+%%Panel.HTMLHead%%
+<body class="search facets page sidebar">
+%%Panel.Header%%
+
+<section class="main">
+	<div class="row">
+		<div class="twelve columns">
+			<div>
+				%%Banner.TopBanner%%
+			</div>
+			%%Panel.SearchPageHeader%%
+		</div>
+	</div>
+	
+	%%Panel.MainGridTopFacets%%
+		
+		%%Panel.SearchPage%%
+		
+		%%Banner.BottomBanner%%
+	%%Panel.MainGridBottomFacets%%
+</section>
+
+%%Panel.Footer%%
+
+<!-- search page scripts -->
+%%Panel.SearchJavaScript%%
+
+%%Panel.HTMLFoot%%
\ No newline at end of file
diff --git a/template/shippingaddressform.html b/template/shippingaddressform.html
old mode 100755
new mode 100644
diff --git a/template/sitemap.html b/template/sitemap.html
old mode 100755
new mode 100644
diff --git a/template/tags.html b/template/tags.html
old mode 100755
new mode 100644
diff --git a/template/top.html b/template/top.html
old mode 100755
new mode 100644
diff --git a/template/unsubscribe.html b/template/unsubscribe.html
old mode 100755
new mode 100644
diff --git a/template/valuteccard.html b/template/valuteccard.html
new file mode 100644
index 0000000..934985c
--- /dev/null
+++ b/template/valuteccard.html
@@ -0,0 +1,29 @@
+	<p class="InfoMessage Message">
+		%%LNG_CreditCardPaymentIntro%%
+	</p>
+
+	<p class="ErrorMessage Message" style="display: %%GLOBAL_HideCreditCardError%%">
+		<strong>%%LNG_CreditCardProcessingError%%</strong><br />
+		%%GLOBAL_CreditCardErrorMessage%%
+	</p>
+
+	<p class="InfoMessage Message" style="display: %%GLOBAL_HideCreditCardError%%">
+		<a href="checkout.php?action=choose_billing_address">Click Here to Change Billing Details if Required</a>
+	</p>
+
+	<form action="%%GLOBAL_ShopPathSSL%%/checkout.php?action=process_payment" method="post" onsubmit="return check_creditcard_payment_form()">
+		<div class="FormContainer HorizontalFormContainer">
+			<dl>
+				<dt><span class="Required">*</span> %%LNG_ValutecNumber%%:</dt>
+				<dd>
+					<input type="text" class="Textbox" name="creditcard_ccno" id="creditcard_ccno" value="%%GLOBAL_CreditCardNum%%" size="30" />
+				</dd>
+				<dt>&nbsp;&nbsp; %%LNG_CreditCardTotalAmount%%:</dt>
+				<dd><em class="ProductPrice">%%GLOBAL_OrderAmount%%</em></dd>
+			</dl>
+			<p class="Submit">
+				<input type="submit" value="%%LNG_CreditCardPayForOrder%%" />
+			</p>
+		</div>
+	</form>
+%%Panel.ValutecCardPaymentJavaScript%%
\ No newline at end of file
diff --git a/template/vendor_page.html b/template/vendor_page.html
old mode 100755
new mode 100644
diff --git a/template/vendor_products.html b/template/vendor_products.html
old mode 100755
new mode 100644
diff --git a/template/vendor_profile.html b/template/vendor_profile.html
old mode 100755
new mode 100644
diff --git a/template/vendors.html b/template/vendors.html
old mode 100755
new mode 100644
diff --git a/template/wishlist.html b/template/wishlist.html
old mode 100755
new mode 100644