/* js functions */
/*

[JS00] - string functions from phpjs
[JS01] - date formatting
[JS02] - hover intent
[JS03] - recipe menu
[JS04] - feed constructor
[JS05] - setModal : setup modal window
[JS06] - doCenter : align the modal window to center
[JS07] - animateText : set the click function to clear text
[JS08] - parseURL
[JS09] - sitemap btn
[JS10] - Google+ (see supported browsers on google plus dev website)
[JS11] - animate background position
[JS12] - global behavior
[JS13] - getUrlParam : get url query string parameter 
[JS14] - parseXMLSubCat : parse xml for sub categories and generate html for display 
[JS15] - parseXMLCat : parse xml for categories and generate html for display
[JS16] - parseXMLRecipe : parse xml recipe and generate html for display
[JS17] - parseXMLSearch : parse xml for keyword recipe search
[JS18] - parseXMLWinRecipes : parse xml for winning recipes and generate html for display
[JS19] - parseXMLPrint : parse xml for printing
[JS20] - shuffle : shuffle arrays for random selected recipes
[JS21] - scrollTo
[JS22] - text trimmer
[JS23] - postToUrl : post to outside url
[JS24] - parseXMLDoc : parse xml convert to object
[JS25] - parseXMLMoreRecipes : parse xml for more recipes
[JS26] - parseXMLReviews : parse xml for reviews
[JS27] - postXMLReview : post review and parse the returned xml
[JS28] - moreLikeThis 

*/


/* [JS01] */
function explode (delimiter, string, limit) {
	var emptyArray = {
		0: ''
	};

	if (arguments.length < 2 || typeof arguments[0] == 'undefined' || typeof arguments[1] == 'undefined') {
		return null;
	}
 
	if (delimiter === '' || delimiter === false || delimiter === null) {
		return false;
	}
 
	if (typeof delimiter == 'function' || typeof delimiter == 'object' || typeof string == 'function' || typeof string == 'object') {
		return emptyArray;
	}
 
	if (delimiter === true) {
		delimiter = '1';
	}
 
	if (!limit) {
		return string.toString().split(delimiter.toString());
	}

	var splitted = string.toString().split(delimiter.toString());
	var partA = splitted.splice(0, limit - 1);
	var partB = splitted.join(delimiter.toString());
	partA.push(partB);
	return partA;
}

function substr (str, start, len) {
	var i = 0,
	allBMP = true,
	es = 0,
	el = 0,
	se = 0,
	ret = '';
	str += '';
	var end = str.length;

	this.php_js = this.php_js || {};
	this.php_js.ini = this.php_js.ini || {};

	switch ((this.php_js.ini['unicode.semantics'] && this.php_js.ini['unicode.semantics'].local_value.toLowerCase())) {
		case 'on':

			for (i = 0; i < str.length; i++) {
				if (/[\uD800-\uDBFF]/.test(str.charAt(i)) && /[\uDC00-\uDFFF]/.test(str.charAt(i + 1))) {
					allBMP = false;
					break;
				}
			}
 
			if (!allBMP) {
				if (start < 0) {
					for (i = end - 1, es = (start += end); i >= es; i--) {
						if (/[\uDC00-\uDFFF]/.test(str.charAt(i)) && /[\uD800-\uDBFF]/.test(str.charAt(i - 1))) {
							start--;
							es--;
						}
					}
				} else {
					var surrogatePairs = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
					while ((surrogatePairs.exec(str)) != null) {
						var li = surrogatePairs.lastIndex;
						if (li - 2 < start) {
							start++;
						} else {
							break;
						}
					}
				}
 
				if (start >= end || start < 0) {
					return false;
				}
				if (len < 0) {
					for (i = end - 1, el = (end += len); i >= el; i--) {
						if (/[\uDC00-\uDFFF]/.test(str.charAt(i)) && /[\uD800-\uDBFF]/.test(str.charAt(i - 1))) {
							end--;
							el--;
						}
					}
					if (start > end) {
						return false;
					}
					return str.slice(start, end);
				} else {
					se = start + len;
					for (i = start; i < se; i++) {
						ret += str.charAt(i);
						if (/[\uD800-\uDBFF]/.test(str.charAt(i)) && /[\uDC00-\uDFFF]/.test(str.charAt(i + 1))) {
							se++; // Go one further, since one of the "characters" is part of a surrogate pair
						}
					}
					return ret;
				}
				break;
			}

		case 'off':

		default:
			if (start < 0) {
				start += end;
			}
			end = typeof len === 'undefined' ? end : (len < 0 ? len + end : len + start);

			return start >= str.length || start < 0 || start > end ? !1 : str.slice(start, end);
	}
	return undefined;
}

function strpos (haystack, needle, offset) {
	var i = (haystack + '').indexOf(needle, (offset || 0));
	return i === -1 ? false : i;
}

function str_replace (search, replace, subject, count) {
	var i = 0,
	j = 0,
	temp = '',
	repl = '',
	sl = 0,
	fl = 0,
	f = [].concat(search),
	r = [].concat(replace),
	s = subject,
	ra = Object.prototype.toString.call(r) === '[object Array]',
	sa = Object.prototype.toString.call(s) === '[object Array]';
	s = [].concat(s);
	if (count) {
		this.window[count] = 0;
	}
 
	for (i = 0, sl = s.length; i < sl; i++) {
		if (s[i] === '') {
			continue;
		}
		for (j = 0, fl = f.length; j < fl; j++) {
			temp = s[i] + '';
			repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
			s[i] = (temp).split(f[j]).join(repl);
			if (count && s[i] !== temp) {
				this.window[count] += (temp.length - s[i].length) / f[j].length;
			}
		}
	}
	return sa ? s : s[0];
}

function randomRange(minNum, maxNum) {
	var multiplier = maxNum-minNum+1;
	return Math.floor(Math.random()*multiplier+minNum);
}

function roundTo(number, to) {
	return Math.round(number * to) / to;
}
/* [JS00][x] */


/* [JS01] */
var dateFormat = function () {
	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
	timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
	timezoneClip = /[^-+\dA-Z]/g,
	pad = function (val, len) {
		val = String(val);
		len = len || 2;
		while (val.length < len) val = "0" + val;
		return val;
	};

	// Regexes and supporting functions are cached through closure
	return function (date, mask, utc) {
		var dF = dateFormat;

		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
		if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
			mask = date;
			date = undefined;
		}

		// Passing date through Date applies Date.parse, if necessary
		date = date ? new Date(date) : new Date;
		if (isNaN(date)) throw SyntaxError("invalid date");

		mask = String(dF.masks[mask] || mask || dF.masks["default"]);

		// Allow setting the utc argument via the mask
		if (mask.slice(0, 4) == "UTC:") {
			mask = mask.slice(4);
			utc = true;
		}

		var	_ = utc ? "getUTC" : "get",
		d = date[_ + "Date"](),
		D = date[_ + "Day"](),
		m = date[_ + "Month"](),
		y = date[_ + "FullYear"](),
		H = date[_ + "Hours"](),
		M = date[_ + "Minutes"](),
		s = date[_ + "Seconds"](),
		L = date[_ + "Milliseconds"](),
		o = utc ? 0 : date.getTimezoneOffset(),
		flags = {
			d:    d,
			dd:   pad(d),
			ddd:  dF.i18n.dayNames[D],
			dddd: dF.i18n.dayNames[D + 7],
			m:    m + 1,
			mm:   pad(m + 1),
			mmm:  dF.i18n.monthNames[m],
			mmmm: dF.i18n.monthNames[m + 12],
			yy:   String(y).slice(2),
			yyyy: y,
			h:    H % 12 || 12,
			hh:   pad(H % 12 || 12),
			H:    H,
			HH:   pad(H),
			M:    M,
			MM:   pad(M),
			s:    s,
			ss:   pad(s),
			l:    pad(L, 3),
			L:    pad(L > 99 ? Math.round(L / 10) : L),
			t:    H < 12 ? "a"  : "p",
			tt:   H < 12 ? "am" : "pm",
			T:    H < 12 ? "A"  : "P",
			TT:   H < 12 ? "AM" : "PM",
			Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
			o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
			S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
		};

		return mask.replace(token, function ($0) {
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
		});
	};
}();

// Some common format strings
dateFormat.masks = {
	"default":      "ddd mmm dd yyyy HH:MM:ss",
	shortDate:      "m/d/yy",
	mediumDate:     "mmm d, yyyy",
	longDate:       "mmmm d, yyyy",
	fullDate:       "dddd, mmmm d, yyyy",
	shortTime:      "h:MM TT",
	mediumTime:     "h:MM:ss TT",
	longTime:       "h:MM:ss TT Z",
	isoDate:        "yyyy-mm-dd",
	isoTime:        "HH:MM:ss",
	isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
	isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
	dayNames: [
	"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
	"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
	monthNames: [
	"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
	"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
	return dateFormat(this, mask, utc);
};

/* [JS01][x] */

/* [JS02] */
(function($){
	$.fn.hoverIntent=function(f,g){
		var cfg={
			sensitivity:7,
			interval:100,
			timeout:0
		};
		
		cfg=$.extend(cfg,g?{
			over:f,
			out:g
		}:f);
		var cX,cY,pX,pY;
		var track=function(ev){
			cX=ev.pageX;
			cY=ev.pageY
		};
			
		var compare=function(ev,ob){
			ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);
			if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){
				$(ob).unbind("mousemove",track);
				ob.hoverIntent_s=1;
				return cfg.over.apply(ob,[ev])
			}else{
				pX=cX;
				pY=cY;
				ob.hoverIntent_t=setTimeout(function(){
					compare(ev,ob)
				},cfg.interval)
			}
		};
		
		var delay=function(ev,ob){
			ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);
			ob.hoverIntent_s=0;
			return cfg.out.apply(ob,[ev])
		};
		
		var handleHover=function(e){
			var ev=jQuery.extend({},e);
			var ob=this;
			if(ob.hoverIntent_t){
				ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t)
			}
			if(e.type=="mouseenter"){
				pX=ev.pageX;
				pY=ev.pageY;
				$(ob).bind("mousemove",track);
				if(ob.hoverIntent_s!=1){
					ob.hoverIntent_t=setTimeout(function(){
						compare(ev,ob)
					},cfg.interval)
				}
			}else{
				$(ob).unbind("mousemove",track);
				if(ob.hoverIntent_s==1){
					ob.hoverIntent_t=setTimeout(function(){
						delay(ev,ob)
					},cfg.timeout)
				}
			}
		};

		return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover)
	}
})(jQuery);
/* [JS02][x] */

/* [JS03] */
/*show recipe*/
$.fn.showRecipe = function(){
	var el = $(this)
	
	$(el).mouseover(function() {
		var xx = $('#recipeMenu #recipemenuContent .searchrecipeWrap input').val();

		$('#recipeMenu').css('display','block');

		$('#recipemenuContent input.searchText').val('SEARCH RECIPES');
		$('#recipemenuContent').slideDown(400,'easeOutBack').css('display','block');

		$('#recipeMenu #recipemenuContent .searchrecipeWrap input').focus(function(){
			$(this).val('')
		})

		$('#recipeMenu').mouseleave(function() {
			$('#recipeMenu').slideUp(100).css('display','none'); 
			$('#recipemenuContent').css('display','none');
		});

	});

	$('#navHome a, #navProducts a, #navgTogethers a, #navHappennings a, #navHistory a').mouseover(function() {
		$('#recipeMenu').css('display','none');		
		$('#recipemenuContent').css('display','none');
	});
}
/* [JS03][x] */

/* [JS04] */
var itemList = "";
var content = "";
function output_feed_items(json) {
	//document.title = json.value.title;
	//var heading = '<h3>' + json.value.title + '</h3>';
	for (i=0;i<json.count;i++) {
		itemList += make_feed_item(json.value.items[i], i);
	//descList.push(make_feed_desc(json.value.items[i], i));
	}
	return /*heading + */itemList;
}

function make_feed_item(item, item_id) {
	var from_feed = "";
	if (strpos(item.link, 'facebook')){
		from_feed = "from Facebook";
	} else {
		from_feed = "from Twitter";
	}
	var link_info = '<a target="_blank" href="' + item.link + '">'+from_feed+'</a>';
	var desc_info = '<div class="pub-date">' + dateFormat(item.pubDate, "ddd mm/dd/yy HH:MM ") + link_info +'</div>';
  
	if (item.author){
		return '<div class="feedID'+item_id+' feed"><h4><a href="'+item.link+'" target="_blank">'+item.author+'</a></h4><div class="feed-description">'+item.description+desc_info+'</div></div>';
	} else {
		return '<div class="feedID'+item_id+' feed"><div class="feed-description">'+str_replace('ro_tel:','<a href="'+item.link+'" target="_blank">@ro_tel:</a>',item.description)+desc_info+'</div></div>';
	}
}
/* [JS04][x] */

/* [JS05] - setModal */
$.fn.setModal = function(pmodalWindow, callback) {
	var elTrigger = $(this);
	var modalWindow = $(pmodalWindow);

	modalWindow.hide();
	modalWindow.css('z-index', 9999);

	modalWindow.find('.btnClose').click(function() {
		if (typeof callback.beforeOut == 'function') callback.beforeOut();

		modalWindow.fadeOut(300, function() {
			if (typeof callback.afterOut == 'function') callback.afterOut();
		});

		return false;
	});

	elTrigger.click(function() {
		$('.modal').fadeOut();
		$('.modal').css('z-index', 1);

		if (typeof callback.beforeIn == 'function') callback.beforeIn();

		modalWindow.doCenter();
		modalWindow.css('z-index', 9999);
		modalWindow.fadeIn(300);

		if (typeof callback.afterIn == 'function') callback.afterIn();

		return false;
	});
}
/* [JS05][x] */

/* [JS06] - doCenter */
$.fn.doCenter = function () {
	var topVal = (($(window).height() - this.outerHeight()) / 2) + $(window).scrollTop();
	var leftVal = (($(window).width() - this.outerWidth()) / 2) + $(window).scrollLeft();

	if (topVal < 0) topVal = 0;
	if (leftVal < 0) leftVal = 0;

	this.css("position","absolute");
	this.css("top", topVal + "px");
	this.css("left", leftVal + "px");

	return this;
}
/* [JS06][x] */ 

/* [JS07] - animateText */
$.fn.animateText = function () {
	var elInput = $(this);
	elInput.click(function() {
		$(this).val('');
	});
}
/* [JS07][x] */

/* [JS08] */
function parseURL(url) {
	var a =  document.createElement('a');
	a.href = url;
	return {
		source: url,
		protocol: a.protocol.replace(':',''),
		host: a.hostname,
		port: a.port,
		query: a.search,
		params: (function(){
			var ret = {},
			seg = a.search.replace(/^\?/,'').split('&'),
			len = seg.length, i = 0, s;
			for (;i<len;i++) {
				if (!seg[i]) {
					continue;
				}
				s = seg[i].split('=');
				ret[s[0]] = s[1];
			}
			return ret;
		})(),
		file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
		hash: a.hash.replace('#',''),
		path: a.pathname.replace(/^([^\/])/,'/$1'),
		relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [,''])[1],
		segments: a.pathname.replace(/^\//,'').split('/')
	};
}
/* [JS08][x]*/

/* [JS09] */
function showOverlayBG(x){
	if (x) {
		var xx = $('body').find('#fade').attr('id')
		if (!xx){
			$('body').prepend('<div id="fade"></div>');
		}
		$('#fade').height($(document).height());
		$('#fade').fadeIn(300)
		$('#fade').click(function(){
			$('.overlay-block').fadeOut(200);
			$(this).fadeOut(200)
			$f().stop();
		})
	} else {
		$('#fade').fadeOut(200, function(){})
		$('.overlay-block').fadeOut(200);
		$f().stop();
	}
}

function initSiteMapBtn(){
	$('.siteMap').click(function(){
		$('.overlay-block').hide();
		//		$('html, body').animate({ scrollTop: 350 }, 400);
		$('html, body').animate({
			scrollTop: 0
		}, 600);
		setTimeout(function(){
			showOverlayBG(1);
			$('#siteMap').doCenter();
			$('#siteMap').delay(300).fadeIn(600);
		//			showOverlayBG(1)
		//			$('html, body').animate({ scrollTop: 0 }, 600);
		},600);
		$('#siteMap .btnClose').click(function(){
			//$('#siteMap').fadeOut(200);
			showOverlayBG(0)
		});
	});
}
/* [JS09][x] */

/* [JS10] */
(function() {
	var po = document.createElement('script');
	po.type = 'text/javascript';
	po.async = true;
	po.src = 'https://apis.google.com/js/plusone.js';
	var s = document.getElementsByTagName('script')[0];
	s.parentNode.insertBefore(po, s);
})();
/* [JS10][x] */

/* [JS11] */
/**
 * @author Alexander Farkas
 * v. 1.22
 */


(function($) {
	if(!document.defaultView || !document.defaultView.getComputedStyle){ // IE6-IE8
		var oldCurCSS = $.curCSS;
		$.curCSS = function(elem, name, force){
			if(name === 'background-position'){
				name = 'backgroundPosition';
			}
			if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){
				return oldCurCSS.apply(this, arguments);
			}
			var style = elem.style;
			if ( !force && style && style[ name ] ){
				return style[ name ];
			}
			return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force);
		};
	}
	
	var oldAnim = $.fn.animate;
	$.fn.animate = function(prop){
		if('background-position' in prop){
			prop.backgroundPosition = prop['background-position'];
			delete prop['background-position'];
		}
		if('backgroundPosition' in prop){
			prop.backgroundPosition = '('+ prop.backgroundPosition;
		}
		return oldAnim.apply(this, arguments);
	};
	
	function toArray(strg){
		strg = strg.replace(/left|top/g,'0px');
		strg = strg.replace(/right|bottom/g,'100%');
		strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
		var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
		return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
	}
	
	$.fx.step. backgroundPosition = function(fx) {
		if (!fx.bgPosReady) {
			var start = $.curCSS(fx.elem,'backgroundPosition');
			if(!start){//FF2 no inline-style fallback
				start = '0px 0px';
			}
			
			start = toArray(start);
			fx.start = [start[0],start[2]];
			var end = toArray(fx.end);
			fx.end = [end[0],end[2]];
			
			fx.unit = [end[1],end[3]];
			fx.bgPosReady = true;
		}
		//return;
		var nowPosX = [];
		nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
		nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];           
		fx.elem.style.backgroundPosition = nowPosX[0]+' '+nowPosX[1];

	};
})(jQuery);
/* ]JS11][x] */

/* [JS12] */
function initGlobal(){
	$('input.searchText').animateText();
}

function onAfterSearchResult (){
	var yy = $('.searchresultContent .sliderLR-list li.result-item').size();
	var elRoot = $(this)
	var elRootRel = $(elRoot).attr('rel')
	var jp = parseInt(elRootRel)-1;
	var prevElRoot = $(this).parent().find('.result-group[rel="0'+jp+'"]')
	var prevElRootRel = $(prevElRoot).attr('rel')
	var xy = $(prevElRoot).find('li.result-item').size();
	var xx = $(elRoot).find('li.result-item').size();
	var currItemStart;
	if (parseInt(elRootRel) > 1){
		currItemStart = xy*parseInt(prevElRootRel) + 1
	} else {
		currItemStart = 1 * parseInt(elRootRel)
	}
	var currItemLength = xx * parseInt(elRootRel)
	var stringConstruct = currItemStart+'-'+currItemLength
	$('.searchresultFooter .result .item-count').html(stringConstruct)
	$('.searchresultFooter .result .item-total').html(yy)
}
/* [JS12][x] */

/* [JS13] */
function getUrlParam(param) {
	var tags = [];
	var hash = [];
	var value = '';
                        
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	for (var i = 0; i < hashes.length; i++) {
		tags = hashes[i].split('#');
		hash = tags[0].split('=');
		//hash = hashes[i].split('=');

		if (hash[0] == param) value = hash[1];
	}

	return value;
}
/* [JS13][x] */

/* [JS14] */
function parseXMLSubCat(subCategory, elSubCat) {
	var arrRecipes = new Array();
	var elContainer = $(elSubCat);
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	$.ajax({
		type:'GET',
		url:'xml/recipes.xml?rand='+rand,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			xml.find('subcategory[code='+subCategory+'] recipes recipe').each(function() {
				var recipeid = $(this).attr('id');
				arrRecipes[recipeid] = recipeid;
			});

			var rand = parseInt(Math.random()*9999999);
			$.ajax({
				type:'GET',
				url:'get-recipe-list.jsp?rand='+rand,
				dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
				success:function(xmlData) {
					var xml2 = parseXMLDoc(xmlData);

					xml2.find('recipeId').each(function() {
						var recipeId = $(this).text();
						if ($.inArray(recipeId, arrRecipes) >= 0) {
							var elRecipe = $(this).closest('recipe');

							var itemName = elRecipe.find('name:first').text();
							var itemUrl = elRecipe.find('url:first').text();
							var cookTime = elRecipe.find('cookTimeMin:first').text();
							var itemRate = elRecipe.find('averageRatingRounded:first').text();
							var imgName = xml.find('recipes recipe[id='+recipeId+']').attr('imageMobile');
							
							if (!itemUrl) itemUrl = 'recipes-detail.jsp?recipeid='+recipeId;			
	
							var imgUrl = (imgName) ? imgPath+imgName : 'images/noImage.png';

							var itemStar = '';
							for (i=1; i<=5; i++) {
								itemStar += (i <= itemRate) ? '<li></li>' : '<li class="white"></li>';
							}

							var itemNameTrimmed = itemName;
							if (itemNameTrimmed.length > 33) itemNameTrimmed = itemNameTrimmed.substr(0, 30) + '..';

							itemUrl = updateUrlToChar(itemUrl);
 
							elContainer.append('<li><a href="'+itemUrl+'"><img class="hero" src="'+imgUrl+'"></a><span class="title"><a title="'+itemName+'" href="'+itemUrl+'">'+itemNameTrimmed+'</a></span><a href="'+itemUrl+'"><ul>'+itemStar+'</ul></a><span class="time"><a href="'+itemUrl+'">Total Time: '+cookTime+' Minutes</a></span></li>');
						}
					});
				}
			});
		}
	});
}
/* [JS14][x] */

/* [JS15] */
function scrollToTarget(el){
	var target = $(el);
	$('html, body').scrollTo( target , 800 );
}

function parseXMLCat(category, elCat) {
	var elContainer = $(elCat);
	var arrRecipes = new Array();
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	var arrSubCat = new Array();
	
	$.ajax({
		type:'GET',
		url:'xml/recipes.xml?rand='+rand,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			//var arrSubCat = new Array();
			var count = 0;
			xml.find('category[code='+category+'] subcategories subcategory').each(function() {
				var elSubCat = $(this);
				var subCat = elSubCat.attr('name');
				var subCatCode = elSubCat.attr('code');
				var subCatId = elSubCat.attr('id');

				arrSubCat[count] = {
					subCatId:subCatId,
					subCatCode:subCatCode,
					html :  '<div class="recipescategoryWrap" rel="'+subCatCode+'"><div class="header"><span class="title">'+subCat+'</span><a href="category-'+category+'-'+subCatCode+'.html" class="btnmoreRecipes" onClick="_gaq.push([\'_trackEvent\', \'More_recipes\', \'Click\']);"></a></div><ul class="recipes">'};
								//
							
				count++;
								//stringy1 = stringy1 + '<div class="recipescategoryWrap" rel="'+subCatCode+'"><div class="header"><span class="title">'+subCat+'</span><a href="category-'+category+'-'+subCatCode+'.html" class="btnmoreRecipes" onClick="_gaq.push([\'_trackEvent\', \'More_recipes\', \'Click\']);"></a></div><ul class="recipes">';
			//elContainer.append('<div class="recipescategoryWrap" rel="'+subCatCode+'"><div class="header"><span class="title">'+subCat+'</span><a href="category-'+category+'-'+subCatCode+'.html" class="btnmoreRecipes" onClick="_gaq.push([\'_trackEvent\', \'More_recipes\', \'Click\']);"></a></div><ul class="recipes"></ul></div>');
			});


			$.ajax({
				type:'GET',
				url:'get-recipe-list.jsp?rand='+rand,
				dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
				success:function(xmlData) {


					$.each(arrSubCat, function(index, cat) {
						var subCatId = cat.subCatId;
						var subCatCode = cat.subCatCode;
						var cathtml = cat.html;

						xml.find('subcategory[code='+subCatCode+'] recipes recipe[feat=true]').each(function(index) {
							var recipeId = $(this).attr('id');
							arrRecipes[index] = recipeId;
						});

						var rand = parseInt(Math.random()*9999999);
						var xml2 = parseXMLDoc(xmlData);

						xml2.find('recipeId').each(function() {
							var recipeId = $(this).text();
							if ($.inArray(recipeId, arrRecipes) >= 0) {
								var elRecipe = $(this).closest('recipe');

								var itemName = elRecipe.find('name:first').text();
								var itemUrl = elRecipe.find('url:first').text();
								var cookTime = elRecipe.find('cookTimeMin:first').text();
								var itemRate = elRecipe.find('averageRatingRounded:first').text();
								var imgName = xml.find('recipes recipe[id='+recipeId+']').attr('imageMobile');

								if (!itemUrl) itemUrl = 'recipes-detail.jsp?recipeid='+recipeId;
	
								var imgUrl = (imgName) ? imgPath+imgName : 'images/noImage.png';

								var itemStar = '';
								for (i=1; i<=5; i++) {
									itemStar += (i <= itemRate) ? '<li></li>' : '<li class="white"></li>';
								}

								var itemNameTrimmed = itemName;
								if (itemNameTrimmed.length > 33) itemNameTrimmed = itemNameTrimmed.substr(0, 30) + '..';

								itemUrl = updateUrlToChar(itemUrl);


								cathtml = cathtml + '<li><a href="'+itemUrl+'"><img class="hero" src="'+imgUrl+'"></a><span class="title"><a title="'+itemName+'" href="'+itemUrl+'">'+itemNameTrimmed+'</a></span><a href="'+itemUrl+'"><ul>'+itemStar+'</ul></a><span class="time"><a href="'+itemUrl+'">Total Time: '+cookTime+' Minutes</a></span></li>';

								//elContainer.find('div.recipescategoryWrap[rel='+subCatCode+'] ul.recipes').append('<li><a href="'+itemUrl+'"><img class="hero" src="'+imgUrl+'"></a><span class="title"><a title="'+itemName+'" href="'+itemUrl+'">'+itemNameTrimmed+'</a></span><a href="'+itemUrl+'"><ul>'+itemStar+'</ul></a><span class="time"><a href="'+itemUrl+'">Total Time: '+cookTime+' Minutes</a></span></li>');
							}
						});
						
						this.html = cathtml +'</ul></div>';
					});
			var bigH = "";
			$.each(arrSubCat, function() {
				bigH += this.html;
			});

			elContainer.append(bigH);					
					
				}
			});
			

		}
		
		
	});    
	
	
}
/* [JS15][x] */

/* [JS16] */

function parseXMLRecipe(recipeId) {
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	$.ajax({
		type:'GET',
		url:'get-recipe.jsp?recipeid='+recipeId+'&rand='+rand,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);
			var itemName = xml.find('name:first').text();
			var prepTime = xml.find('prepTimeMin:first').text();
			var cookTime = xml.find('cookTimeMin:first').text();
			var servings = xml.find('quantityLong:first').text();
			
			var imgName;
			var $imgNameNode = $(xml.find('imageName'));
	
	
			$.each($imgNameNode, function(ind,$node) {
				if($.browser.msie && document.documentMode && document.documentMode < 9) {
					if($node.text.indexOf(recipeId)!=-1)
						imgName = $node.text;
					
					
				} else {
					if($node.textContent.indexOf(recipeId)!=-1)
						imgName = $node.textContent;
					
				}
				
			});
					
			
/*			$.each(imgNameNode, function(ind,node) {
					alert(node.parentElement.parentElement.nodeName);
				if( node.parentElement.parentElement.nodeName != "RELATEDRECIPES" ) {
					imgName = node.textContent;
					alert(node.parentElement.parentElement.nodeName);
				}
				else {
		//			alert("!"+node.parentElement.parentElement.nodeName);

				}
			});
*/
			
			var itemRate = xml.find('averageRatingRounded:first').text();
			var itemDesc = xml.find('description:first').text();
			var avgRate = xml.find('averageRating:first').text();
			var numRate = xml.find('numberOfRatings:first').text();
			var cookTip = xml.find('cookTips:first string').text();

			var imgUrl = (imgName!=null ? imgPath+imgName : 'images/noimageHero.png');

			var itemStar = '';
			for (i=1; i<=5; i++) {
				itemStar += (i <= itemRate) ? '<li></li>' : '<li class="white"></li>';	
			}

			// recipe details
			$('#recipeHero img').attr('src', imgUrl);
			$('#recipeheroContent h2').html(itemName);
			$('#recipeheroContent #preptime').html('<strong>Prep Time</strong> '+prepTime+' minutes');
			$('#recipeheroContent #totaltime').html('<strong>Total Time:</strong> '+cookTime+' minutes');
			$('#recipeheroContent #servings').html('<strong>Serves:</strong> '+servings);
			$('#recipeheroContent #desc').html(itemDesc);
						
			$('#recipeheroContent div.info div.rateWrap ul li').remove();
			$('#recipeheroContent div.info div.rateWrap ul').html(itemStar);
			$('#recipeheroContent div.info div.rateWrap #ratings').html('Average of '+numRate+' ratings: '+avgRate+' stars');
	
			$('#writeAreview #reviewrecipeContent span.title').html('REVIEW: '+itemName);		
			$('#emailRecipe #emailrecipeContent span.title').html(itemName);
			$('#nutservings').html('<strong>Serving Size:</strong> '+servings);		   
 
			adjustRecipeTitle();

			if (cookTip) {
				$('div.recipemainContent div.cookTips ol li p').html(cookTip);
			} else {
				$('div.recipemainContent div.cookTips').hide();
			}

			// nutritional facts
			var nCnt = 0;
			$('#nutrifactsRecipe div.nutrifactsContent span.title').html(itemName);
			$('#nutrifactsRecipe table tr.nutridata td').remove();
			xml.find('nutritionalList recipeNutritional').each(function() {
				var nutUom = $(this).find('uom').text();
				var nutName = $(this).find('shortName').text();
				var nutAmt = $(this).find('amt').text();
				var nutDiv = $(this).find('dvAmt').text();

				var nutItem = '';	
				if (nutName == 'FAT') nutItem = 'Total Fat';
				if (nutName == 'SFA') nutItem = 'Saturated Fat';
				if (nutName == 'CHOL') nutItem = 'Cholesterol';
				if (nutName == 'NA') nutItem = 'Sodium';
				if (nutName == 'CHO') nutItem = 'Total Carbohydrate';
				if (nutName == 'TDFB') nutItem = 'Dietary Fiber';
				if (nutName == 'SUGR') nutItem = 'Sugar';
				if (nutName == 'PRO') nutItem = 'Protein';
				if (nutName == 'VTAIU') nutItem = 'Vitamin A';
				if (nutName == 'VITC') nutItem = 'Vitamin C';
				if (nutName == 'CA') nutItem = 'Calcium';
				if (nutName == 'KCAL') nutItem = 'Calories';
				if (nutName == 'FE') nutItem = 'Iron';

				if (nutName == 'KCAL') {
					$('#nutrifactsRecipe table tr td#td'+nutName).html(nutAmt);	
					$('#nutcalories').html('<strong>Calories:</strong> '+nutAmt);
				} else if (nutItem) {
					$('#nutrifactsRecipe table tr#tr'+nutName).append('<td colspan="2">'+nutItem+' </td><td colspan="2">'+nutAmt+' '+nutUom+'</td><td class="dailyValue">'+nutDiv+'%</td>');
				}
			});
			// END nutritional facts

			// recipe ingredients
			$('div.recipemainContent div.ingredients ul li').remove();
			xml.find('ingredients ingredient').each(function() {
				var ingName = $(this).find('ingredientName').text();
				var ingAmt = $(this).find('ingredientQuantity formattedAmount').text();
				var ingUom = $(this).find('ingredientQuantity unitOfMeasure').text();
				var ingItem = '';

				if (ingAmt) ingItem = ingAmt + ' ';
				if (ingUom) ingItem += ingUom + ' ';
				if (ingName) ingItem += ingName;

				if (ingItem) $('div.recipemainContent div.ingredients ul').append('<li>'+ingItem+'</li>');
			});
			// END recipe ingredients

			// recipe instructions
			$('div.recipemainContent div.directions ol li').remove();
			xml.find('instructions recipeInstruction').each(function() {
				var insSeq = $(this).find('sequence').text();
				var insText = $(this).find('text').text();

				if (insText) $('div.recipemainContent div.directions ol').append('<li><p>'+insText+'</p></li>');
			});
			// END recipe instructions

			// recipe reviews
			var numPages = xml.find('reviews numPages').text();
			$('div.recipemainContent div.reviews div.header div.pageNav').attr('rel',numPages);

			$('div.recipemainContent div.reviews div.reviewList div.reviewWrap').remove();
			xml.find('reviews reviewList recipeReview').each(function() {
				var revAuth = $(this).find('author').text();
				var revRate = $(this).find('rating').text();
				var revFull = $(this).find('fullReview').text();
				var revDate = $(this).find('formatedPostedDate').text();
				var revItem = '';

				var revStar = '';
				var i = 0;
				for (i=1; i<=5; i++) {
					revStar += (i <= revRate) ? '<li></li>' : '<li class="white"></li>';
				}

				if (revAuth) revItem = '<span class="reviewName">'+revAuth+'</span>';
				if (revDate) revItem += '<span class="reviewDate">'+revDate+'</span>';
				if (revRate) revItem += '<div class="rateWrap"><span>Overall Rating:</span><ul>'+revStar+'</ul></div>';
				if (revFull) revItem += '<p>'+revFull+'</p>';

				$('div.recipemainContent div.reviews div.reviewList').append('<div class="reviewWrap">'+revItem+'</div>');
			});

			var revTotal = xml.find('reviews totalReviews').text();
			var revPages = xml.find('reviews numPages').text();

			$('div.recipemainContent div.reviews div.reviewNum span#revdesc').html(revTotal+' people have reviewed '+itemName);

			$('a#r5').html('All ('+revTotal+')');
			$('a#r5').attr('title','All ('+revTotal+')');

			var ratePoor = 0;
			xml.find('reviews ratingCounts ratingCount').each(function() {
				var rateId = $(this).find('rating').text();
				var rateVal = $(this).find('value').text();

				if (rateId == 'r1' || rateId == 'r2') {
					ratePoor = parseInt(ratePoor + rateVal);
				}

				//				if (rateId == 'r2') {
				//					$('a#r1').html('Poor ('+rateVal+')');
				//		                        $('a#r1').attr('title','Poor ('+rateVal+')');	
				//				}

				if (rateId == 'r3') {
					$('a#r2').html('Good ('+rateVal+')');
					$('a#r2').attr('title','Good ('+rateVal+')');
				}

				if (rateId == 'r4') {
					$('a#r3').html('Very Good ('+rateVal+')');
					$('a#r3').attr('title','Very Good ('+rateVal+')');
				}

				if (rateId == 'r5') {
					$('a#r4').html('Excellent ('+rateVal+')');
					$('a#r4').attr('title','Excellent ('+rateVal+')');
				}
			});

			$('a#r1').html('Poor ('+ratePoor+')');
			$('a#r1').attr('title','Poor ('+ratePoor+')');
		// END recipe reviews
		}
	});
}
/* [JS16][x] */

/* [JS17] */
function parseXMLSearch(keyword, elSearch, limit, param, tlength, callback) {
	var arrRecipes = new Array();
	var elContainer = $(elSearch);
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var regExpObj = new RegExp(keyword, "gi");
	var ulCnt = 0;
	var rand = parseInt(Math.random()*9999999);

	if (!param) param = '&sortby=name&order=asc';
	if (!tlength) tlength = 30;

	$.ajax({
		type:'GET',
		url:'get-recipe-list.jsp?rand='+rand+param,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			var elCnt = 0;
			var elItem = '';

			xml.find('recipeId').each(function() {
				var recipeId = $(this).text();
				var elRecipe = $(this).closest('recipe');

				var itemName = elRecipe.find('name:first').text();
				var itemUrl = elRecipe.find('url:first').text();
				var itemDesc = elRecipe.find('description:first').text();
				var cookTime = elRecipe.find('cookTimeMin:first').text();
				var itemRate = elRecipe.find('averageRatingRounded:first').text();
				var imgName = elRecipe.find('imageThumbnail:first').text();

				if (!itemUrl) itemUrl = 'recipes-detail.jsp?recipeid='+recipeId;
	
				var imgUrl = (imgName) ? imgPath+imgName : 'images/noimageThumb.png';

				var itemStar = '';
				for (i=1; i<=5; i++) {
					itemStar += (i <= itemRate) ? '<li></li>' : '<li class="white"></li>';
				}

				if ((itemName.match(regExpObj) || itemDesc.match(regExpObj)) && keyword != '') {
					var itemNameTrimmed = itemName;
					if (itemNameTrimmed.length > tlength) itemNameTrimmed = itemNameTrimmed.substr(0, tlength) + '..';

					itemUrl = updateUrlToChar(itemUrl);

					elItem += '<li class="result-item"><a class="thumb" title="'+itemName+'" href="'+itemUrl+'"><img class="hero" src="'+imgUrl+'"></a><div class="content"><a class="title" title="'+itemName+'" href="'+itemUrl+'">'+itemNameTrimmed+'</a><a title="'+itemName+'" href="'+itemUrl+'"><ul>'+itemStar+'</ul></a><a title="'+itemName+'" class="time" href="'+itemUrl+'">'+cookTime+' Minutes</a></div></li>';

					elCnt ++;
					if (elCnt == limit) {
						ulCnt ++;

						elContainer.append('<ul class="recipes" rel="'+ulCnt+'">'+elItem+'</ul>');
						elItem = '';
						elCnt = 0;
					}
				}
			});

			if (elItem) {
				ulCnt ++;
				elContainer.append('<ul class="recipes" rel="'+ulCnt+'">'+elItem+'</ul>');
			}

			elContainer.find('ul.recipes').css('display','none');
			elContainer.find('ul.recipes:first').css('display','block');

			if (typeof callback.afterIn == 'function') callback.afterIn();
		}
	});
}
/* [JS17][x] */

/* [JS18] */
function parseXMLWinRecipes(elRecipes) {
	var arrRecipes = new Array();
	var elContainer = $(elRecipes);
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	$.ajax({
		type:'GET',
		url:'xml/recipes.xml?rand='+rand,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			var xmlRand = $.shuffle(xml.find('recipes recipe'));
			var i = 0;
			xmlRand.each(function() {
				var recipeid = $(this).attr('id');
				i++;
				if (i<=9) arrRecipes[recipeid] = recipeid;
			});

			var rand = parseInt(Math.random()*9999999);
			$.ajax({
				type:'GET',
				url:'get-recipe-list.jsp?rand='+rand,
				dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
				success:function(xmlData) {
					var xml2 = parseXMLDoc(xmlData);

					xml2.find('recipeId').each(function() {
						var recipeId = $(this).text();
						if ($.inArray(recipeId, arrRecipes) >= 0) {
							var elRecipe = $(this).closest('recipe');

							var itemName = elRecipe.find('name:first').text();
							var itemUrl = elRecipe.find('url:first').text();
							var cookTime = elRecipe.find('cookTimeMin:first').text();
							var itemRate = elRecipe.find('averageRatingRounded:first').text();
							var imgName = xml.find('recipes recipe[id='+recipeId+']').attr('imageMobile');
			
							if (!itemUrl) itemUrl = 'recipes-detail.jsp?recipeid='+recipeId;
	
							var imgUrl = (imgName) ? imgPath+imgName : 'images/noImage.png';

							var itemStar = '';
							for (i=1; i<=5; i++) {
								itemStar += (i <= itemRate) ? '<li></li>' : '<li class="white"></li>';
							}

							var itemNameTrimmed = itemName;
							if (itemNameTrimmed.length > 33) itemNameTrimmed = itemNameTrimmed.substr(0, 30) + '..';

							itemUrl = updateUrlToChar(itemUrl);

							elContainer.append('<li><a href="'+itemUrl+'"><img class="hero" src="'+imgUrl+'"></a><span class="title"><a title="'+itemName+'" href="'+itemUrl+'">'+itemNameTrimmed+'</a></span><a href="'+itemUrl+'"><ul>'+itemStar+'</ul></a><span class="time"><a href="'+itemUrl+'">Total Time: '+cookTime+' Minutes</a></span></li>');
														
						}
					});
				}
			});
		}
				
	});
}
/* [JS18][x] */

/* [JS19] */
function parseXMLPrint(recipeId) {
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	$.ajax({
		type:'GET',
		url:'get-recipe.jsp?recipeid='+recipeId+'&rand='+rand,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			var itemName = xml.find('name:first').text();
			var prepTime = xml.find('prepTimeMin:first').text();
			var cookTime = xml.find('cookTimeMin:first').text();
			var servings = xml.find('quantityLong:first').text();
			var imgName = xml.find('imageThumbnail:first').text();
			var itemDesc = xml.find('description:first').text();
			var cookTip = xml.find('cookTips:first string').text();
			var imgUrl = (imgName) ? imgPath+imgName : 'images/noImage.png';

			$('div.TopRecipeCard div.recipeReview img').attr('src',imgUrl);
			$('div.TopRecipeCard div.recipeTitle').html(itemName);
			$('div.TopRecipeCard div.recipeReview p.desc').html(itemDesc);
			$('div.TopRecipeCard div.recipeReview span.preptime').html(prepTime+' minutes');
			$('div.TopRecipeCard div.recipeReview span.cooktime').html(cookTime+' minutes');
			$('div.TopRecipeCard div.recipeReview span.servings').html(servings);

			$('div.recipeCooktips').html(cookTip);
			if (cookTip) $('div.recipeTitleCooktips').show();

			xml.find('ingredients ingredient').each(function() {
				var ingName = $(this).find('ingredientName').text();
				var ingAmt = $(this).find('ingredientQuantity formattedAmount').text();
				var ingUom = $(this).find('ingredientQuantity unitOfMeasure').text();

				$('div.TopRecipeCard ul.ingredientList').append('<li>'+ingAmt+' '+ingUom+' '+ingName+'</li>');
			});

			xml.find('instructions recipeInstruction').each(function() {
				var insSeq = $(this).find('sequence').text();
				var insText = $(this).find('text').text();

				$('div.BottomRecipeCard ol.directionList').append('<li>'+insText+'</li>');
			});
			/*
			xml.find('nutritionalList recipeNutritional').each(function() {
                                var nutriName = $(this).find('shortName').text();
                                var nutriUom = $(this).find('uom').text();
				var nutriAmt = $(this).find('amt').text();

                                $('table.recipeNutritionTable tbody').append('<tr><td><strong>'+nutriName+'</strong></td><td>'+nutriAmt+' '+nutriUom+'</td></tr>');
                        });			
*/
			// nutritional facts
			var nCnt = 0;
			$('#nutrifactsRecipe div.nutrifactsContent span.title').html(itemName);
			$('#nutrifactsRecipe table tr.nutridata td').remove();
			xml.find('nutritionalList recipeNutritional').each(function() {
				var nutUom = $(this).find('uom').text();
				var nutName = $(this).find('shortName').text();
				var nutAmt = $(this).find('amt').text();
				var nutDiv = $(this).find('dvAmt').text();

				var nutItem = '';
				if (nutName == 'FAT') nutItem = 'Total Fat';
				if (nutName == 'SFA') nutItem = 'Saturated Fat';
				if (nutName == 'CHOL') nutItem = 'Cholesterol';
				if (nutName == 'NA') nutItem = 'Sodium';
				if (nutName == 'CHO') nutItem = 'Total Carbohydrate';
				if (nutName == 'TDFB') nutItem = 'Dietary Fiber';
				if (nutName == 'SUGR') nutItem = 'Sugar';
				if (nutName == 'PRO') nutItem = 'Protein';
				if (nutName == 'VTAIU') nutItem = 'Vitamin A';
				if (nutName == 'VITC') nutItem = 'Vitamin C';
				if (nutName == 'CA') nutItem = 'Calcium';
				if (nutName == 'KCAL') nutItem = 'Calories';
				if (nutName == 'FE') nutItem = 'Iron';

				if (nutName == 'KCAL') {
					$('#nutrifactsRecipe table tr td#td'+nutName).html(nutAmt);
					$('#nutcalories').html('<strong>Calories:</strong> '+nutAmt);
				} else if (nutItem) {
					$('#nutrifactsRecipe table tr#tr'+nutName).append('<td colspan="2">'+nutItem+' </td><td colspan="2">'+nutAmt+' '+nutUom+'</td><td class="dailyValue">'+nutDiv+'%</td>');
				}
			});
			// END nutritional facts

			window.print();
		}
	});
}
/* [JS19][x] */

/* [JS20] */
$.fn.shuffle = function() {
	return this.each(function() {
		var items = $(this).children();
		return (items.length)
		? $(this).html($.shuffle(items))
		: this;
	});
}
 
$.shuffle = function(arr) {
	for (
		var j, x, i = arr.length; i;
		j = parseInt(Math.random() * i),
		x = arr[--i], arr[i] = arr[j], arr[j] = x
	);
	return arr;
}
/* [JS20][x] */

/* [JS21] */
;
(function(d){
	var k=d.scrollTo=function(a,i,e){
		d(window).scrollTo(a,i,e)
	};
		
	k.defaults={
		axis:'xy',
		duration:parseFloat(d.fn.jquery)>=1.3?0:1
	};
		
	k.window=function(a){
		return d(window)._scrollable()
	};
		
	d.fn._scrollable=function(){
		return this.map(function(){
			var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;
			if(!i)return a;
			var e=(a.contentWindow||a).document||a.ownerDocument||a;
			return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement
		})
	};
		
	d.fn.scrollTo=function(n,j,b){
		if(typeof j=='object'){
			b=j;
			j=0
		}
		if(typeof b=='function')b={
			onAfter:b
		};
		
		if(n=='max')n=9e9;
		b=d.extend({},k.defaults,b);
		j=j||b.speed||b.duration;
		b.queue=b.queue&&b.axis.length>1;
		if(b.queue)j/=2;
		b.offset=p(b.offset);
		b.over=p(b.over);
		return this._scrollable().each(function(){
			var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');
			switch(typeof f){
				case'number':case'string':
					if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){
						f=p(f);
						break
					}
					f=d(f,this);
				case'object':
					if(f.is||f.style)s=(f=d(f)).offset()
			}
			d.each(b.axis.split(''),function(a,i){
				var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);
				if(s){
					g[c]=s[h]+(u?0:l-r.offset()[h]);
					if(b.margin){
						g[c]-=parseInt(f.css('margin'+e))||0;
						g[c]-=parseInt(f.css('border'+e+'Width'))||0
					}
					g[c]+=b.offset[h]||0;
					if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]
				}else{
					var o=f[h];
					g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o
				}
				if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);
				if(!a&&b.queue){
					if(l!=g[c])t(b.onAfterFirst);
					delete g[c]
				}
			});
			t(b.onAfter);
			function t(a){
				r.animate(g,j,b.easing,a&&function(){
					a.call(this,n,b)
				})
			}
		}).end()
	};
	
	k.max=function(a,i){
		var e=i=='x'?'Width':'Height',h='scroll'+e;
		if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();
		var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;
		return Math.max(l[h],m[h])-Math.min(l[c],m[c])
	};
	
	function p(a){
		return typeof a=='object'?a:{
			top:a,
			left:a
		}
	}
})(jQuery);
/* [JS21][x] */


/* [JS22] */
function adjustRecipeTitle(){ //computation to resize recipe title
	var recipeTitleContainer = $('#recipeheroContent').width()
	var recipeTitleLength = $('#recipeheroContent h2:first').html().length
	var recipeTitleFontSize = parseInt($('#recipeheroContent h2:first').css('fontSize'))
	var computedWidth = recipeTitleContainer / (recipeTitleLength * recipeTitleFontSize)
	var textRatio = 0.68 // [current font-size] * [max character on single line] * [width of container]
	if (recipeTitleLength > 30){
		$('#recipeheroContent h2:first').css('fontSize',parseInt(recipeTitleContainer/(textRatio*recipeTitleLength)))
	}
	return false;
}

function adjustWinningRecipeTitle(){ //computation to resize recipe title
	var recipeTitleContainer = $('#winningrecipesMain ul').children().width()
	var zz;
	var xx;
	$('#winningrecipesMain ul').children().find('.title').each(function(){
		xx = $(this).find('a').html()
		zz = xx.length
		if (zz > 33) {
			xx = $.trim(substr(xx,0,30))+'...'
			$(this).find('a').html(xx)
		//alert (zz)
		}
	})
  
	return false;
}
/* [JS22][x] */

/* [JS23] */
function postToUrl(url, params) {
	var form = document.createElement('form');
	form.action = url;
	form.method = 'POST';

	for (var i in params) {
		if (params.hasOwnProperty(i)) {
			var input = document.createElement('input');
			input.type = 'hidden';
			input.name = i;
			input.value = params[i];

			form.appendChild(input);
		}
	}

	form.submit();
}
/* [JS23][x] */

/* [JS24] */
function parseXMLDoc(xmlData) { 
	if ($.isXMLDoc(xmlData) || !$.browser.msie || ($.browser.msie && document.documentMode == 9)) {
		return $(xmlData);
	} else {
		var xmlDoc = $.parseXML(xmlData);
		return $(xmlDoc);
	}
}
/* [JS24][x] */

/* [JS25] */
function parseXMLMoreRecipes(elRecipes) {
	var arrRecipes = new Array();
	var elContainer = $(elRecipes);
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	$.ajax({
		type:'GET',
		url:'xml/recipes.xml?rand='+rand,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			var xmlRand = $.shuffle(xml.find('recipes recipe'));
			var i = 0;
			xmlRand.each(function() {
				var recipeid = $(this).attr('id');
				i++;
				if (i<=3) arrRecipes[recipeid] = recipeid;
			});

			var rand = parseInt(Math.random()*9999999);
			$.ajax({
				type:'GET',
				url:'get-recipe-list.jsp?rand='+rand,
				dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
				success:function(xmlData) {
					var xml2 = parseXMLDoc(xmlData);
					var moreCnt = 0;

					xml2.find('recipeId').each(function() {
						var recipeId = $(this).text();
						if ($.inArray(recipeId, arrRecipes) >= 0) {
							var elRecipe = $(this).closest('recipe');

							var itemName = elRecipe.find('name:first').text();
							var itemUrl = elRecipe.find('url:first').text();
							var imgName = elRecipe.find('imageName:first').text();

							if (!itemUrl) itemUrl = 'recipes-detail.jsp?recipeid='+recipeId;

							var imgUrl = (imgName) ? imgPath+imgName : 'images/noImage.png';

							var itemNameTrimmed = itemName;
							if (itemNameTrimmed.length > 33) itemNameTrimmed = itemNameTrimmed.substr(0, 30) + '..';

							var itemNameMore = moreLikeThis(itemName);
							moreCnt ++;

							itemUrl = updateUrlToChar(itemUrl);

							elContainer.append('<li><div class="hero"><a href="'+itemUrl+'" title="'+itemName+'" onClick="_gaq.push([\'_trackEvent\', \'More_likethis_'+moreCnt+'\', \'Click\']);"></a><img src="'+imgUrl+'" alt=""></div><a href="'+itemUrl+'" title="'+itemName+'">'+itemNameMore+'</a></li>');
						}
					});
				}
			});
		}

	});
}
/* [JS25][x] */

/* [JS26] */
function parseXMLReviews(recipeId, pageNum, rating) {
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	if (!pageNum || pageNum == 'undefined') pageNum = 1;
	if (!rating || rating == 'undefined') rating = '';
	$.ajax({
		type:'GET',
		url:'get-reviews.jsp?recipeid='+recipeId+'&rand='+rand+'&page='+pageNum+'&rating='+rating,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			// recipe reviews
			$('div.recipemainContent div.reviews div.reviewList div.reviewWrap').remove();
			xml.find('reviewList recipeReview').each(function() {
				var revAuth = $(this).find('author').text();
				var revRate = $(this).find('rating').text();
				var revFull = $(this).find('fullReview').text();
				var revDate = $(this).find('formatedPostedDate').text();
				var revItem = '';

				var revStar = '';
				var i = 0;
				for (i=1; i<=5; i++) {
					revStar += (i <= revRate) ? '<li></li>' : '<li class="white"></li>';
				}

				if (revAuth) revItem = '<span class="reviewName">'+revAuth+'</span>';
				if (revDate) revItem += '<span class="reviewDate">'+revDate+'</span>';
				if (revRate) revItem += '<div class="rateWrap"><span>Overall Rating:</span><ul>'+revStar+'</ul></div>';
				if (revFull) revItem += '<p>'+revFull+'</p>';

				$('div.recipemainContent div.reviews div.reviewList').append('<div class="reviewWrap">'+revItem+'</div>');
			});
		// END recipe reviews
		}
	});
}
/* [JS26][x] */

/* [JS27] */
function postXMLReview(recipeId, reviewName, reviewText, overallRating) {
	var imgPath = 'http://consumerrecipe.conagrafoods.com/uploadedImages/';
	var rand = parseInt(Math.random()*9999999);

	$.ajax({
		type:'POST',
		url:'post-review.jsp',
		data: 'rand='+rand+'&recipeid='+recipeId+'&reviewname='+reviewName+'&overallrating='+overallRating+'&reviewtext='+reviewText,
		dataType: ($.browser.msie && document.documentMode < 9) ? 'xml' : 'html',
		success:function(xmlData) {
			var xml = parseXMLDoc(xmlData);

			var itemName = xml.find('name:first').text();

			// recipe reviews
			$('div.recipemainContent div.reviews div.reviewList div.reviewWrap').remove();
			xml.find('reviews reviewList recipeReview').each(function() {
				var revAuth = $(this).find('author').text();
				var revRate = $(this).find('rating').text();
				var revFull = $(this).find('fullReview').text();
				var revDate = $(this).find('formatedPostedDate').text();
				var revItem = '';

				var revStar = '';
				var i = 0;
				for (i=1; i<=5; i++) {
					revStar += (i <= revRate) ? '<li></li>' : '<li class="white"></li>';
				}

				if (revAuth) revItem = '<span class="reviewName">'+revAuth+'</span>';
				if (revDate) revItem += '<span class="reviewDate">'+revDate+'</span>';
				if (revRate) revItem += '<div class="rateWrap"><span>Overall Rating:</span><ul>'+revStar+'</ul></div>';
				if (revFull) revItem += '<p>'+revFull+'</p>';

				$('div.recipemainContent div.reviews div.reviewList').append('<div class="reviewWrap">'+revItem+'</div>');
			});

			var revTotal = xml.find('reviews totalReviews').text();
			var revPages = xml.find('reviews numPages').text();

			$('div.recipemainContent div.reviews div.reviewNum span#revdesc').html(revTotal+' people have reviewed '+itemName);

			xml.find('reviews ratingCounts ratingCount').each(function() {
				var rateId = $(this).find('rating').text();
				var rateVal = $(this).find('value').text();

				if (rateId == 'r1') var r1 = $('a#r1').html('Poor ('+rateVal+')');
				if (rateId == 'r2') var r2 = $('a#r2').html('Good ('+rateVal+')');
				if (rateId == 'r3') var r3 = $('div.recipemainContent div.reviews div.reviewNum ul li a#r3').html('Very Good ('+rateVal+')');
				if (rateId == 'r4') var r4 = $('div.recipemainContent div.reviews div.reviewNum ul li a#r4').html('Excellent ('+rateVal+')');
				if (rateId == 'r5') var r5 = $('div.recipemainContent div.reviews div.reviewNum ul li a#r5').html('All ('+rateVal+')');
			});
		// END recipe reviews
		}
	});
}
/* [JS27][x] */

/* [JS28] */
function moreLikeThis(title) {
	var arrTitle = title.split(" ");
	var cntArray = 0;

	var strTitle = '';
	$.each(arrTitle, function(inx, val) {
		cntArray ++;
	});

	for (inx = 0; inx < cntArray; inx++) {
		var val = arrTitle[inx];
		if ((inx + 1) == cntArray) {
			val = '<span>'+val+'</span>';
		}
		strTitle += ' '+val;
	}

	return strTitle;
}
/* [JS28][x] */

/* [JS29] */
function updateUrlToChar(url) {
	if (url == '/recipes-Fiesta-7-Layer-Dip-2797.html') url = '/recipes-Fiesta-Seven-Layer-Dip-2797.html';
	if (url == '/recipes-30-Minute-Chili-5403.html') url = '/recipes-Thirty-Minute-Chili-5403.html';

	return url;
} 
/* [JS29][x] */

