text: /*
  
   * DC jQuery Drill Down Menu - jQuery drill down ipod menu
   * Copyright (c) 2011 Design Chemical
   *
   * Dual licensed under the MIT and GPL licenses:
   * 	http://www.opensource.org/licenses/mit-license.php
   * 	http://www.gnu.org/licenses/gpl.html
   *
   */
  
  (function($){
  
  	//define the new for the plugin ans how to call it
  	$.fn.dcDrilldown = function(options) {
  
  		//set default options
  		var defaults = {
  			classWrapper	: 'dd-wrapper',
  			classMenu		: 'dd-menu',
  			classParent		: 'dd-parent',
  			classParentLink	: 'dd-parent-a',
  			classActive		: 'active-ul',
  			classHeader		: 'dd-header',
  			eventType		: 'click',
  			hoverDelay		: 300,
  			speed       	: 2000,
  			saveState		: false,
  			showCount		: false,
  			classCount		: 'dd-count',
  			classIcon		: 'dd-icon',
  			linkType		: 'backlink',
  			resetText		: 'All',
  			headerTag		: 'h6',
  			defaultText		: 'Select Option',
  			includeHdr		: true
  		};
  
  		//call in the default otions
  		var options = $.extend(defaults, options);
  
  		//act upon the element that is passed into the design
  		return this.each(function(options){
  
  			var $dcDrilldownObj = this;
  			$($dcDrilldownObj).addClass(defaults.classMenu);
  			var $wrapper = '<div class="'+defaults.classWrapper+'" />';
  			$($dcDrilldownObj).wrap($wrapper);
  			var $dcWrapper = $($dcDrilldownObj).parent();
  			var objIndex = $($dcWrapper).index('.'+defaults.classWrapper);
  			var idHeader = defaults.classHeader+'-'+objIndex;
  			var idWrapper = defaults.classWrapper+'-'+objIndex;
  			$($dcWrapper).attr('id',idWrapper);
  			var $header = '<div id="'+idHeader+'" class="'+defaults.classHeader+'"></div>';
  
  			setUpDrilldown();
  
  			if(defaults.saveState == true){
  				var cookieId = defaults.classWrapper+'-'+objIndex;
  				checkCookie(cookieId, $dcDrilldownObj);
  			}
  
  			resetDrilldown($dcDrilldownObj, $dcWrapper);
  
  			$('li a',$dcDrilldownObj).click(function(e){
  
  				$link = this;
  				$activeLi = $(this).parent('li').not('.disabled').stop();
  				$siblingsLi = $($activeLi).siblings();
  
  				// Drilldown action
  				if($('> ul',$activeLi).length){
  					if($($link).hasClass(defaults.classActive)){
  						$('ul a',$activeLi).removeClass(defaults.classActive);
  						resetDrilldown($dcDrilldownObj, $dcWrapper);
  					} else {
  						actionDrillDown($activeLi, $dcWrapper, $dcDrilldownObj);
  					}
  				}
  
  				// Prevent browsing to link if has child links
  				if($(this).next('ul').length > 0){
  					e.preventDefault();
  				}
  			});
  
  			// Set up accordion
  			function setUpDrilldown(){
  
  				$arrow = '<span class="'+defaults.classIcon+'"></span>';
  				$($dcDrilldownObj).before($header);
  
  				// Get width of menu container & height of list item
  				var totalWidth = $($dcDrilldownObj).outerWidth();
  				totalWidth += 'px';
  				var itemHeight = $('li',$dcDrilldownObj).outerHeight(true);
  
  				// Get height of largest sub menu
  				var objUl = $('ul',$dcDrilldownObj);
  				var maxItems = findMaxHeight(objUl);
  
  				// Get level of largest sub menu
  				//var maxUl = $(objUl.html()+'[rel="'+maxItems+'"]');
  				var maxUl = $('[rel="'+maxItems+'"]', objUl);
  				var getIndex = findMaxIndex(maxUl);
  
  				// Set menu container height
  				if(defaults.linkType == 'link'){
  					menuHeight = itemHeight * (maxItems + getIndex);
  				} else {
  					menuHeight = itemHeight * maxItems;
  				}
  
  				// Set sub menu width and offset
  				$('li',$dcDrilldownObj).each(function(){
  					$('ul',this).css({marginRight: '-'+totalWidth, marginTop: '0'});
  					if($('> ul',this).length){
  						$(this).addClass(defaults.classParent);
  						$('> a',this).addClass(defaults.classParentLink).append($arrow);
  						if(defaults.showCount == true){
  							var parentLink = $('a:not(.'+defaults.classParentLink+')',this);
  							var countParent = parseInt($(parentLink).length);
  							getCount = countParent;
  							$('> a',this).append(' <span class="'+defaults.classCount+'">('+getCount+')</span>');
  						}
  					}
  				});
  
  				// Add css class
  				$('ul',$dcWrapper).each(function(){
  					$('li:last',this).addClass('last');
  				});
  				$('> ul > li:last',$dcWrapper).addClass('last');
  				if(defaults.linkType == 'link'){
  					$(objUl).css('top',itemHeight+'px');
  				}
  
  			    // Add 'active' class to parent list item in all levels
  			    $('ul',$dcWrapper).find('li.active').parents('li').addClass('active');
  			}
  
  			// Breadcrumbs
  			$('#'+idHeader).on('click', 'a', function(e){
  
  				if($(this).hasClass('link-back')){
  					linkIndex = $('#'+idWrapper+' .'+defaults.classParentLink+'.active-ul').length;
  					linkIndex = linkIndex-2;
  					$('a.'+defaults.classActive+':last', $dcDrilldownObj).removeClass(defaults.classActive);
  				} else {
  					// Get link index
  					var linkIndex = parseInt($(this).index('#'+idHeader+' a'));
  					if(linkIndex == 0){
  						$('a',$dcDrilldownObj).removeClass(defaults.classActive);
  					} else {
  						// Select equivalent active link
  						linkIndex = linkIndex-1;
  						$('a.'+defaults.classActive+':gt('+linkIndex+')',$dcDrilldownObj).removeClass(defaults.classActive);
  					}
  				}
  				resetDrilldown($dcDrilldownObj, $dcWrapper);
  				e.preventDefault();
  				e.stopPropagation();
  			});
  		});
  
  		function findMaxHeight(element){
  			var maxValue = undefined;
  			$(element).each(function(){
  				var val = parseInt($('> li',this).length);
  				$(this).attr('rel',val);
  				if (maxValue === undefined || maxValue < val){
  					maxValue = val;
  				}
  			});
  			return maxValue;
  		}
  
  		function findMaxIndex(element){
  			var maxIndex = undefined;
  			$(element).each(function(){
  				var val = parseInt($(this).parents('li').length);
  				if (maxIndex === undefined || maxIndex < val) {
  					maxIndex = val;
  				}
  			});
  			return maxIndex;
  		}
  
  		// Drill Down
  		function actionDrillDown(element, wrapper, obj){
  			// Declare header
  			var $header = $('.'+defaults.classHeader, wrapper);
  
  			// Get new breadcrumb and header text
  			var getNewBreadcrumb = $(defaults.headerTag,$header).html();
  			var getNewHeaderText = $('> a',element).html();
  			//var getParentText = $(wrapper).find('.'+defaults.classMenu).data('category');
  
  
  
  			// Add new breadcrumb
  			if(defaults.linkType == 'breadcrumb'){
  				if(!$('ul',$header).length){
  					$($header).prepend('<ul></ul>');
  				}
  				if(getNewBreadcrumb == defaults.defaultText){
  					$('ul',$header).append('<li><a href="#" class="first"> '+defaults.resetText+'</a></li>');
  				} else {
  					$('ul',$header).append('<li><a href="#"> '+getNewBreadcrumb+'</a></li>');
  				}
  			}
  			if(defaults.linkType == 'backlink'){
  				if(!$('a',$header).length){
  					$($header).prepend('<a href="#" class="link-back"> '+getNewBreadcrumb+'</a>');
  				} else {
  					$('.link-back',$header).html(getNewBreadcrumb);
  				}
  			}
  			if(defaults.linkType == 'link'){
  				if(!$('a',$header).length){
  					$($header).prepend('<ul><li><a href="#" class="first"> '+defaults.resetText+'</a></li></ul>');
  				}
  			}
  			// Update header text
  			updateHeader($header, getNewHeaderText);
  
  			// declare child link
  			var activeLink = $('> a',element);
  
  			// add active class to link
  			$(activeLink).addClass(defaults.classActive);
  			$('> ul li',element).show();
  			$('> ul',element).animate({"margin-right": 0}, defaults.speed);
  
  			// Find all sibling items & hide
  			var $siblingsLi = $(element).siblings();
  			$($siblingsLi).hide();
  
  			// If using breadcrumbs hide this element
  			if(defaults.linkType != 'link'){
  				$(activeLink).hide();
  			}
  
  			// Write cookie if save state is on
  			if(defaults.saveState == true){
  				var cookieId = $(wrapper).attr('id');
  				createCookie(cookieId, obj);
  			}
  		}
  
  		// Drill Up
  		function actionDrillUp(element, obj, wrapper){
  			// Declare header
  			var $header = $('.'+defaults.classHeader, wrapper);
  
  			var activeLink = $('> a',element);
  			var checklength = $('.'+defaults.classActive, wrapper).length;
  			var activeIndex = $(activeLink).index('.'+defaults.classActive, wrapper);
  
  			// Get width of menu for animating right
  			var totalWidth = $(obj).outerWidth(true);
  			$('ul',element).css('margin-right',-totalWidth+'px');
  
  			// Show all elements
  			$(activeLink).addClass(defaults.classActive);
  			$('> ul li',element).show();
  			$('a',element).show();
  
  			// Get new header text from clicked link
  			var getNewHeaderText = $('> a',element).html();
  			$(defaults.headerTag,$header).html(getNewHeaderText);
  
  			if(defaults.linkType == 'breadcrumb'){
  				var breadcrumbIndex = activeIndex-1;
  				$('a:gt('+activeIndex+')',$header).remove();
  			}
  		}
  
  		function updateHeader(obj, html){
  			if(defaults.includeHdr == true){
  				if($(defaults.headerTag,obj).length){
  					$(defaults.headerTag,obj).html(html);
  				} else {
  					$(obj).append('<'+defaults.headerTag+'>'+html+'</'+defaults.headerTag+'>');
  				}
  			}
  		}
  
  		// Reset accordion using active links
  		function resetDrilldown(obj, wrapper){
  			var $header = $('.'+defaults.classHeader, wrapper);
  			$('ul',$header).remove();
  			$('a',$header).remove();
  			$('li',obj).show();
  			$('a',obj).show();
  			var totalWidth = $(obj).outerWidth(true);
  			if(defaults.linkType == "link"){
  				if($('a.'+defaults.classActive+':last',obj).parent('li').length){
  					var lastActive = $('a.'+defaults.classActive+':last',obj).parent('li');
  					$('ul',lastActive).css('margin-right',-totalWidth+'px');
  				}else {
  				$('ul',obj).css('margin-right',-totalWidth+'px');
  				}
  			} else {
  				$('ul',obj).css('margin-right',-totalWidth+'px');
  			}
  			updateHeader($header, defaults.defaultText);
  
  			// Write cookie if save state is on
  			if(defaults.saveState == true){
  				var cookieId = $(wrapper).attr('id');
  				createCookie(cookieId, obj);
  			}
  
  			$('a.'+defaults.classActive,obj).each(function(i){
  				var $activeLi = $(this).parent('li').stop();
  				actionDrillDown($activeLi, wrapper, obj);
  			});
  		}
  
  		// Retrieve cookie value and set active items
  		function checkCookie(cookieId, obj){
  			var cookieVal = $.cookie(cookieId);
  			if(cookieVal != null){
  				// create array from cookie string
  				var activeArray = cookieVal.split(',');
  				$.each(activeArray, function(index,value){
  					// mewsoft. fix firefox root menu not shown
  					value = parseInt(value) + 0;
  					var $cookieLi = $('li:eq('+value+')',obj);
  					$('> a',$cookieLi).addClass(defaults.classActive);
  				});
  			}
  		}
  
  		// Write cookie
  		function createCookie(cookieId, obj){
  			var activeIndex = [];
  			// Create array of active items index value
  			$('a.'+defaults.classActive,obj).each(function(i){
  				var $arrayItem = $(this).parent('li');
  				var itemIndex = $('li',obj).index($arrayItem);
  				activeIndex.push(itemIndex);
  			});
  			// Store in cookie
  			$.cookie(cookieId, activeIndex, { path: '/' });
  		}
  	};
  })(jQuery);
  
  
  
  
  /*!
   * jQuery Cookie Plugin v1.4.1
   * https://github.com/carhartl/jquery-cookie
   *
   * Copyright 2006, 2014 Klaus Hartl
   * Released under the MIT license
   */
  (function (factory) {
  	if (typeof define === 'function' && define.amd) {
  		// AMD
  		define(['jquery'], factory);
  	} else if (typeof exports === 'object') {
  		// CommonJS
  		factory(require('jquery'));
  	} else {
  		// Browser globals
  		factory(jQuery);
  	}
  }(function ($) {
  
  	var pluses = /\+/g;
  
  	function encode(s) {
  		return config.raw ? s : encodeURIComponent(s);
  	}
  
  	function decode(s) {
  		return config.raw ? s : decodeURIComponent(s);
  	}
  
  	function stringifyCookieValue(value) {
  		return encode(config.json ? JSON.stringify(value) : String(value));
  	}
  
  	function parseCookieValue(s) {
  		if (s.indexOf('"') === 0) {
  			// This is a quoted cookie as according to RFC2068, unescape...
  			s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
  		}
  
  		try {
  			// Replace server-side written pluses with spaces.
  			// If we can't decode the cookie, ignore it, it's unusable.
  			// If we can't parse the cookie, ignore it, it's unusable.
  			s = decodeURIComponent(s.replace(pluses, ' '));
  			return config.json ? JSON.parse(s) : s;
  		} catch(e) {}
  	}
  
  	function read(s, converter) {
  		var value = config.raw ? s : parseCookieValue(s);
  		return $.isFunction(converter) ? converter(value) : value;
  	}
  
  	var config = $.cookie = function (key, value, options) {
  
  		// Write
  
  		if (arguments.length > 1 && !$.isFunction(value)) {
  			options = $.extend({}, config.defaults, options);
  
  			if (typeof options.expires === 'number') {
  				var days = options.expires, t = options.expires = new Date();
  				t.setTime(+t + days * 864e+5);
  			}
  
  			return (document.cookie = [
  				encode(key), '=', stringifyCookieValue(value),
  				options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
  				options.path    ? '; path=' + options.path : '',
  				options.domain  ? '; domain=' + options.domain : '',
  				options.secure  ? '; secure' : ''
  			].join(''));
  		}
  
  		// Read
  
  		var result = key ? undefined : {};
  
  		// To prevent the for loop in the first place assign an empty array
  		// in case there are no cookies at all. Also prevents odd result when
  		// calling $.cookie().
  		var cookies = document.cookie ? document.cookie.split('; ') : [];
  
  		for (var i = 0, l = cookies.length; i < l; i++) {
  			var parts = cookies[i].split('=');
  			var name = decode(parts.shift());
  			var cookie = parts.join('=');
  
  			if (key && key === name) {
  				// If second argument (value) is a function it's a converter...
  				result = read(cookie, value);
  				break;
  			}
  
  			// Prevent storing a cookie that we couldn't decode.
  			if (!key && (cookie = read(cookie)) !== undefined) {
  				result[name] = cookie;
  			}
  		}
  
  		return result;
  	};
  
  	config.defaults = {};
  
  	$.removeCookie = function (key, options) {
  		if ($.cookie(key) === undefined) {
  			return false;
  		}
  
  		// Must not alter options, thus extending a fresh object...
  		$.cookie(key, '', $.extend({}, options, { expires: -1 }));
  		return !$.cookie(key);
  	};
  
  }));
  