window.addEvent('domready', function() {
/******* search input in the header *********/
	$('searchInput').addEvent('focus', function(){
			if($('searchInput').get('value').toLowerCase() == 'buscar' ){
				$('searchInput').set('value', '');
			}
	});
	$('searchInput').addEvent('blur', function(){
			if($('searchInput').get('value') == '' ){
				$('searchInput').set('value', 'Buscar');
			}
	});

	if($('searchInput').get('value') == '' ){
		$('searchInput').set('value', 'Buscar');
	}
	
/********* Adding target _blank for validation ************/	
	if ($$('a[rel="external"]').length > 0) {
    	$$('a[rel="external"]').each(function(element, i) {
      		element.setProperty('target', '_blank');
    	});
  	}
 
 /******** Set the Leftnav active state **********/
  	if($('home')) {
		var nav = new leftNav('left_1');
	}
	
/********* Set the product landing page **********/	
	if($('product_landing')) {
		var product_landing = new productLanding();
	}

/********* Product details page ************/	  	
	if ($('product-details')) {
		$('recipeInput').addEvent('focus', function(){
				if($('recipeInput').get('value').toLowerCase() == 'buscar' ){
					$('recipeInput').set('value', '');
				}
		});
		$('recipeInput').addEvent('blur', function(){
				if($('recipeInput').get('value') == '' ){
					$('recipeInput').set('value', 'Buscar');
				}
		});
	
		if($('recipeInput').get('value') == '' ){
			$('recipeInput').set('value', 'Buscar');
		}
	}

/******** About US page for the time line slider **********/
	if($('about-us')) {
		curSlide = 0;
		numSlides = 9;
		slideWidth = 778;
		$('left_arrow').addEvent('click', slideLeft);
	    $('right_arrow').addEvent('click', slideRight);
	    $('timeline_container').setStyle('display','block');
	    $('slider_window').setStyle('overflow-x','hidden');
	    $('slides_container').tween('right', '0px');
	}

/******** Mobile Tour page for the time line slider **********/
	//Bio Slider
	if($('mobile_tour')) {
		curSlide = 0;
		numSlides = 4;
		slideWidth = 654;
		$('left_arrow').addEvent('click', slideLeft);
	    $('right_arrow').addEvent('click', slideRight);
	    $('right_arrow_container').setStyle('display','block');
	    $('slider_window').setStyle('overflow-x','hidden');
	    $('slides_container').tween('right', '0px');
	}

/******** Recipe map page for the time line slider **********/
	if($('recipe_map')) {
	    $('left_arrow').addEvent('click', slideMapLeft);
	    $('right_arrow').addEvent('click', slideMapRight);
	    $('slider_container').setStyle('display','block');
	    $('slides_container').setStyle('width',mapSlideWidth*numMapSlides + 'px');
	    $('slider_window').setStyle('overflow-x','hidden');
	    var url = new String(location.href);
	    var regex = /#([\w]+)/;
	    var hashes = regex.exec(url);
	    
	    //Kill country anchors
	    $$('a.country').each(function(el){
	    	el.erase('id');
	    	el.erase('name');
	    });
	    
	    //Set active country
	    $$('div.country').each(function(el){
	    	var regex = /^country_([\d]+)$/i;
    		var matches = regex.exec(el.id);
    		var children = el.getChildren('a');
		    if (hashes){
		    	if (hashes && hashes[0] == children[0].get('href')){
			    	curMapSlide = matches[1];
			    	el.addClass('active');
			    }
		    }else if (matches[1] == curMapSlide){
    			el.addClass('active');
    		}

	    	el.addEvent('click', function(){
	    		slideMapTo(matches[1]);
	    		return false;
	    	});
	    });
	    
	    //Set starting slide
	    $('slides_container').setStyle('right',curMapSlide*mapSlideWidth + 'px');
	    toggleMapButtons();
	}
	
/******** Slider set up, probably could simplify these calls ********/

	if($('grillingtips')) {
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_grilling',
			elementScrolled: 'SlideItMoo_inner_grilling',
			thumbsContainer: 'SlideItMoo_items_grilling',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 350,
			showControls:1,
			startIndex:1
		});
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_summer',
			elementScrolled: 'SlideItMoo_inner_summer',
			thumbsContainer: 'SlideItMoo_items_summer',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 265,
			showControls:1,
			startIndex:1
		});
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_browne',
			elementScrolled: 'SlideItMoo_inner_browne',
			thumbsContainer: 'SlideItMoo_items_browne',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 240,
			showControls:1,
			startIndex:1
		});		
		
	}
	if($('tailgatingtips')) {
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_tailgating',
			elementScrolled: 'SlideItMoo_inner_tailgating',
			thumbsContainer: 'SlideItMoo_items_tailgating',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 350,
			showControls:1,
			startIndex:1
		});
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_treats',
			elementScrolled: 'SlideItMoo_inner_treats',
			thumbsContainer: 'SlideItMoo_items_treats',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 265,
			showControls:1,
			startIndex:1
		});
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_enck',
			elementScrolled: 'SlideItMoo_inner_enck',
			thumbsContainer: 'SlideItMoo_items_enck',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 240,
			showControls:1,
			startIndex:1
		});		
		
	}
	if($('mobile_tour')) {
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_mobile',
			elementScrolled: 'SlideItMoo_inner_mobile',
			thumbsContainer: 'SlideItMoo_items_mobile',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 559,
			showControls:1,
			startIndex:1
		});
	}
	if($('entertainingtips')) {
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_entertaining',
			elementScrolled: 'SlideItMoo_inner_entertaining',
			thumbsContainer: 'SlideItMoo_items_entertaining',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 350,
			showControls:1,
			startIndex:1
		});
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_spring',
			elementScrolled: 'SlideItMoo_inner_spring',
			thumbsContainer: 'SlideItMoo_items_spring',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 265,
			showControls:1,
			startIndex:1
		});
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_gathering',
			elementScrolled: 'SlideItMoo_inner_gathering',
			thumbsContainer: 'SlideItMoo_items_gathering',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 240,
			showControls:1,
			startIndex:1
		});		
	}
		if($('beansandhealth')) {
			/* Tips and Inspiration Bean Health Accordion */
			var acc = new Fx.Accordion($$('.question'), $$('.answer'), {
				opacity: true,
	        	display: 0,
            	alwaysHide: true,
	        	onActive: function(toggler, element) {
    	        	toggler.setStyle('background-image', 'url(../../images/products/dietary/minus_sign.png)');
	        	},
	        	onBackground: function(toggler, element) {
    	        	toggler.setStyle('background-image', 'url(../../images/products/dietary/plus_sign.png)');
	    		}
			});
		}

		if($('dietary')) {
			/* Product Dietary Consideration page */
			var acc = new Fx.Accordion($$('.question'), $$('.answer'), {
				opacity: true,
	        	display: 0,
            	alwaysHide: true,
	        	onActive: function(toggler, element) {
    	        	toggler.setStyle('background-image', 'url(../../images/products/dietary/minus_sign.png)');
	        	},
	        	onBackground: function(toggler, element) {
    	        	toggler.setStyle('background-image', 'url(../../images/products/dietary/plus_sign.png)');
	    		}
			});
		}
		if($('celebrity_chef')) {			
			var box = new CeraBox();
			box.addItems('a.video', {
				group: true,
				clickToClose: false,
				width: 425,
				height: 300
			});
			//$('video_main').addClass('active');
			if (typeof DD_belatedPNG == 'object'){
				DD_belatedPNG.fix('.cerabox-close, .cerabox-left span, .cerabox-right span');
			}
		}	
		if($('faq')) {
			/*  */
			var acc = new Fx.Accordion($$('dt'), $$('dd'), {
				opacity: true,
	        	display: 0,
            	alwaysHide: true
			});
		}
		if($('contact_us')) {
			if ($('subject-type').value != "-1"){
				displaySubjectFields();
				updateSelects($('upc-field'));
			}
				
			$('subject-type').addEvent('change', displaySubjectFields);
        	$('subject-type').addEvent('change', displaySubjectFields);
        	$('comment-box').addEvent('keydown', wordCount);
        	$('comment-box').addEvent('keyup', wordCount);
        }
		if($('additional_comments')) {
			$('comment-box').addEvent('keydown', wordCount);
        	$('comment-box').addEvent('keyup', wordCount);
        }

});


/************ Product Langing Page Class ****************/
var productLanding = new Class({
	Implements: [Events,Options],
	options: {
	},
	initialize: function(){
		this.productAddEvents();
		this.productSlider();
	},
	productAddEvents: function() {
		$$('ul#product_nav li').each(function(item) {
			item.addEvents({
				mouseenter: function() {
					switch (item.get('id'))
					{
						case "nav_bb" :
							this.productLandingReset();
							$$('#nav_bb a').addClass('active');
							$('baked_beans').addClass('active');
						break;
						case "nav_gb" :
							this.productLandingReset();
							$$('#nav_gb a').addClass('active');
							$('grillin_beans').addClass('active');
						break;
						case "nav_rb" :
							this.productLandingReset();
							$$('#nav_rb a').addClass('active');
							$('recipe_beans').addClass('active');
						break;
						case "nav_rbh" :
							this.productLandingReset();
							$$('#nav_rbh a').addClass('active');
							$('refried_beans').addClass('active');					
						break;
						case "nav_all" :
							this.productLandingReset();
							$$('#nav_all a').addClass('active');
							$('all_products').addClass('active');					
						break;
						default:
							this.productLandingReset();
							$$('#nav_all a').addClass('active');
							$('all_products').addClass('active');
						break;
					}
				}.bind(this)
			});
		}.bind(this));	
	},
	productLandingReset: function() {
		$$('body#product_landing div.main-block .active').each(function(el) {
			el.removeClass('active');
		});
	}, 
	productSlider: function() {
		/* SlideItMoo */
		new SlideItMoo({
			overallContainer: 'SlideItMoo_outer_product',
			elementScrolled: 'SlideItMoo_inner_product',
			thumbsContainer: 'SlideItMoo_items_product',
			itemsVisible:1,
			elemsSlide:1,
			duration:300,
			itemsSelector: '.SlideItMoo_element',
			itemWidth: 357,
			showControls:1,
			startIndex:1
		});
	}
});

/***************** Left Nav Class for the Homepage *************************/
var leftNav = new Class({
	Implements: [Events,Options],
	options: {
	},
	initialize: function(element){
		this.navActive = element;
		this.resetNav();
		this.attachClick();
		this.sliders = $$('.sliders');
		this.switchSlider(this.navActive);
	},
	resetNav: function() {
		$$('#home_left_nav ul#left_nav li').each(function(item) {
  			if (item.hasClass('active')) {
  				item.removeClass('active')
  			}
  		});
  		this.setActive();
	}, 
	setActive: function() {
		$$('#home_left_nav ul#left_nav li').each(function(item) {
  			if (item.hasClass('active')) {
  				item.removeClass('active')
  			}
  		});
  		$(this.navActive).addClass('active');
  	},
  	attachClick: function() {
		$$('#home_left_nav ul#left_nav li').each(function(item){
			item.addEvent('click', function() {
	  			this.navActive = item.get('id');
  				this.setActive();
  				this.setBackgroundImage();
  				return false;
  			}.bind(this));
  		}.bind(this));
	}, 
	setBackgroundImage: function() {
		switch (this.navActive)
		{
			case "left_1" :
				$$('div.nav_right_bg').setStyles({
					background: 'url(images/home/bg_quick_and_easy.png) no-repeat 0 0 transparent',
					left: '672px',
					width: '316px' 
					
				});
				this.switchSlider(this.navActive);
			break;
			
			case "left_2" :
				$$('div.nav_right_bg').setStyles({
					background: 'url(images/home/bg_seasonal.png) no-repeat 0 0 transparent',
					left: '463px',
					width: '525px' 
				});
				this.switchSlider(this.navActive);
			break;
			
			case "left_3" :
				$$('div.nav_right_bg').setStyles({
					background: 'url(images/home/bg_kids.png) no-repeat 0 0 transparent',
					left: '524px',
					width: '464px' 
				});
				this.switchSlider(this.navActive);
			break;
			
			case "left_4" :
				$$('div.nav_right_bg').setStyles({
					background: 'url(images/home/bg_cookouts.png) no-repeat 0 0 transparent',
					left: '575px',
					width: '413px' 
					
				})			
				this.switchSlider(this.navActive);
			break;
			
			default :
				$$('div.nav_right_bg').setStyles({
					background: 'url(images/home/bg_quick_and_easy.png) no-repeat 0 0 transparent',
					left: '672px',
					width: '316px' 
				});
				this.switchSlider(this.navActive);
			break;
		}
	}, 
	switchSlider: function(el) {
		this.sliders.each(function(item){
			slider = item.get('id');
			sliderActive = 'SlideItMoo_outer_'+el;
			if ( slider == sliderActive) {
				$(this.slider).addClass('active');
			} else {
				$(this.slider).removeClass('active');
			}
		});
		
		/* SlideItMoo Homepage*/
		new SlideItMoo({
					overallContainer: 'SlideItMoo_outer_'+this.navActive,
					elementScrolled: 'SlideItMoo_inner_'+this.navActive,
					thumbsContainer: 'SlideItMoo_items_'+this.navActive,
					itemsVisible:1,
					elemsSlide:1,
					duration:300,
					itemsSelector: '.SlideItMoo_element',
					itemWidth: 730,
					showControls:1,
					startIndex:1
		});
	}
	
});	

/****** About Us & Mobile Tour Slider/Time line ********/
var curSlide = 0;
var numSlides = 9;
var slideWidth = 778;
function slideRight(){
	if (curSlide<numSlides-1){
		curSlide++;
		if (curSlide == numSlides-1){
	        $('right_arrow_container').setStyle('display', 'none');
		}
		if (curSlide == 1){
	        $('left_arrow_container').setStyle('display', 'block');
		}
		slide();
	}
	return false;
}

function slideLeft(){
	if (curSlide>0){
		curSlide--;
		if (curSlide == 0){
			$('left_arrow_container').setStyle('display', 'none');
		}
		if (curSlide == numSlides-2){
			$('right_arrow_container').setStyle('display', 'block');
		}
		slide();
	}
	return false;
}

function slide(){
	if($('about-us')) {
		if (curSlide > 0){
			$('left_date').setProperty('src', '../images/about_us/slides/timeline_era_'+(curSlide-1)+'.png');
			if(Browser.name == 'ie' && Browser.version == 6) {
				$('left_date').setStyle('display', 'none');
	    	} else { 
				$('left_date').setStyle('display', 'block');
			}
		}
		else{
			$('left_date').setStyle('display', 'none');
		}
		
		if (curSlide < numSlides-1){
			$('right_date').setProperty('src', '../images/about_us/slides/timeline_era_'+(curSlide+1)+'.png');
			if(Browser.name == 'ie' && Browser.version == 6) {
				$('right_date').setStyle('display', 'none');
		    } else {
		    	$('right_date').setStyle('display', 'block');
		    }
		}
		else{
		    $('right_date').setStyle('display', 'none');
		}
	}
		
	$('slides_container').tween('right', curSlide*slideWidth);
}

/****** Recipe map Slider/Time line ********/
var curMapSlide = 13;
var numMapSlides = 20;
var mapSlideWidth = 745;

function slideMapRight(){
	if (curMapSlide<numMapSlides-1){
		curMapSlide++;
		slideMap();
	}
	return false;
}

function slideMapLeft(){
	if (curMapSlide>0){
		curMapSlide--;
		slideMap();
	}
	return false;
}

function slideMapTo(ind){
	curMapSlide = ind;
	slideMap();
	return false;
}

function toggleMapButtons(){
	if (curMapSlide==0){
		$('left_arrow_container').setStyle('display', 'none');
		if (numMapSlides>1){
			$('right_arrow_container').setStyle('display', 'block');
		}
	}else if (curMapSlide == numMapSlides-1){
		$('right_arrow_container').setStyle('display', 'none');
		if (numMapSlides>1){
			$('left_arrow_container').setStyle('display', 'block');
		}
	}else{
		$('left_arrow_container').setStyle('display', 'block');
		$('right_arrow_container').setStyle('display', 'block');
	}
}

function slideMap(){
	$$('div.country').each(function(el){
		el.removeClass('active');
    });
	$('country_' + curMapSlide).addClass('active');
	$('slides_container').tween('right', curMapSlide*mapSlideWidth);
	toggleMapButtons();
}


/****** Beautiful Bean Footage *****/
function playVideo(videoId)
{
	document.getElementsByName("VideoPlayer")[0].playVideo(videoId);
}

/****** Product Detail page ******/
function showPage(page){
	if (page == "product-reviews"){
		resetTab();	
		$('product-reviews').setStyle("display","block");
		$('product-recipes').setStyle("display","none");
		$('product-nutrition').setStyle("display","none");
		$('reviews-link').addClass('active');
	}
	else if (page == "product-recipes"){
		resetTab();
		$('product-reviews').setStyle("display","none");
		$('product-recipes').setStyle("display","block");
		$('product-nutrition').setStyle("display","none");
		$('recipes-link').addClass('active');		
	}
	else{
		resetTab();
		$('product-reviews').setStyle("display","none");
		$('product-recipes').setStyle("display","none");
		$('product-nutrition').setStyle("display","block");
		$('nutrition-link').addClass('active');
	}
	return false;
}
function resetTab() {
	$$('#detail-top a').each(function(item) {
		if (item.hasClass('active')) {
			item.removeClass('active')
		}
	});
}


/*************** Registration Logic *******************/
/* TO DO: try to consolidate Validation into common components */
function validateRegister(){
        
       var foundErrors = false; 
       var val = $('first-name').value;
       var val2; /* confirmation values */ 
       if (!val || !((/^[A-Z0-9 \-\'\`\.]{1,50}$/i).test(val))){
                $('first-name').addClass("error");
                foundErrors = true;
       }
       else { $('first-name').removeClass("error"); }

       val = $('last-name').value;
       if (!val || !((/^[A-Z0-9 \-\'\`\.]{1,50}$/i).test(val))){
                $('last-name').addClass("error");
                foundErrors = true;
       }
       else { $('last-name').removeClass("error"); }

       val = $('email-address').value;
       if (!val || !((/^[\w\+\-\.\_]+@[\w\.\-]+\.\w{2,}$/i).test(val))){
                $('email-address').addClass("error");
                foundErrors = true;
       }
       else { $('email-address').removeClass("error"); }


       val2 = $('email-address-confirm').value;        
       if (!val2 || val2 != val){
                foundErrors = true;
                $('email-address-confirm').addClass("error");
       }
       else { $('email-address-confirm').removeClass("error"); }

       val = $('password').value;
       if (!val || !((/^[A-Z0-9 !\#\$\%\*\/\?\^\{\}\`\~\&\'\+\-\=\_]{8,100}$/i).test(val))){
                foundErrors = true;
                $('password').addClass("error");
       }
       else { $('password').removeClass("error"); }

       val2 = $('password-confirm').value;
       if (!val2 || val2 != val){
                foundErrors = true;
                $('password-confirm').addClass("error");
       }
       else { $('password-confirm').removeClass("error"); }

       val = $('nickname').value;
       if (!val || !((/^[A-Z0-9 \-`]{1,50}$/i).test(val))){
                foundErrors = true;
                $('nickname').addClass("error");
       }
       else { $('nickname').removeClass("error"); }

       val = $('zip-code').value;
       if ( !val || !((/^[A-Z0-9 \-]{1,10}$/i).test(val))){
                $('zip-code').addClass("error");
                foundErrors = true;
       }
       else { $('zip-code').removeClass("error"); }

       val = $('birth-year').value;
       if (val == "-1"){
                $('birth-year').addClass("error");
                foundErrors = true;
       }
       else { $('birth-year').removeClass("error"); }

       if (foundErrors){ 
	       $('form-errors').addClass("error");
	       scroll(0,0);
	       return false;
       }
       else {  
       		$('form-errors').removeClass("error");
      }
}

/******************* Contact Us Validation ***********************/
function validateContactUs(){
	var foundErrors = false; 
	var val = $('first-name').value;
	if (!val || !((/^[A-Z0-9 \-\`\.]{1,50}$/i).test(val))){
		$('first-name').addClass("error");
		foundErrors = true;
	}
	else { $('first-name').removeClass("error"); }
	
	val = $('last-name').value;
	if (!val || !((/^[A-Z0-9 \-\`\.]{1,50}$/i).test(val))){
		$('last-name').addClass("error");
		foundErrors = true;
	}
	else { $('last-name').removeClass("error"); }
	
	val = $('email-address').value;
	if (!val || !((/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@[\w\.\-]+\.\w{2,}$/i).test(val))){
		$('email-address').addClass("error");
		foundErrors = true;
	}
	else { $('email-address').removeClass("error"); }
	
	val = $('first-address').value;
	if ( val && !((/^[A-Z0-9 \-\'\.\/]{1,50}$/i).test(val)) ){
		$('first-address').addClass("error");
		foundErrors = true;
	}
	else { $('first-address').removeClass("error"); }
	
	val = $('second-address').value;
	if ( val && !((/^[A-Z0-9 \-\'\.\/]{1,50}$/i).test(val)) ){
		$('second-address').addClass("error");
		foundErrors = true;
	}
	else { $('second-address').removeClass("error"); }
	
	val = $('city').value;
	if ( val && !((/^[A-Z \-\.\']{1,50}$/i).test(val)) ){
		$('city').addClass("error");
		foundErrors = true;
	}
	else { $('city').removeClass("error"); }
	
	/* state from select */
	
	/* country from select */
	
	val = $('zip-code').value;
	if ( !val || !((/^[A-Z0-9 \-]{1,10}$/i).test(val)) ){
		$('zip-code').addClass("error");
		foundErrors = true;
	}
	else { $('zip-code').removeClass("error"); }
	
	val = $('telephone').value;
	if (!val){
		$('telephone').addClass("error");
		foundErrors = true;
	}
	else { $('telephone').removeClass("error"); }
	
	if ($('subject-type').value == "-1") {
		$('subject-type').addClass("error");
		foundErrors = true;
	}     		
	
	if ($('subject-type')[$('subject-type').selectedIndex].value == "Product Feedback"){
		val = $('lot-code').value;
		if (val && !((/^[A-Z0-9]{1,10}$/i).test(val)) ){
			$('lot-code').addClass("error");
			foundErrors = true;
		}
		else { $('lot-code').removeClass("error"); }
		
		val = $('production-code').value;
		if (val && !((/^[A-Z0-9]{1,10}$/i).test(val)) ){
			$('production-code').addClass("error");
			foundErrors = true;
		}
		else { $('production-code').removeClass("error"); }
		
		val = $('seamer').value;
		if (val && !((/^[A-Z0-9]{1,3}$/i).test(val)) ){
			$('seamer').addClass("error");
			foundErrors = true;
		}
		else { $('seamer').removeClass("error"); }
		
		val = $('time-code').value;
		if (val && !((/^[A-Z0-9\: ]{1,10}$/i).test(val)) ){
			$('time-code').addClass("error");
			foundErrors = true;
		}
		else { $('time-code').removeClass("error"); }
		
		/* cooker from select */
		
		/* best-by-month from select */
		
		/* best-by-year from select */
	}
		
	 val = $('comment-box').value;
	 if (!val || !( (/[A-Z0-9\!\#\$\%\*\/\?\|\^\{\}\`\~\&\'\+\-\=\(\)\"\_ ]/i).test(val)) ){
		$('comment-box').addClass("error");
		foundErrors = true;
	}
	else { $('comment-box').removeClass("error"); }
	
	if (foundErrors){ 
		$('form-errors').addClass('show');  
		scroll(0,0);
		return false;
	}
	 else { 
		$('form-errors').removeClass('show');
	}
}

/********************* My Profile Validation Logic **************************/
/* TO DO: try to consolidate logic with Register where possible */
function validateMyAccount(){
	var foundErrors = false; 
	var val = $('first-name').value;
	var val2; /* confirmation values */ 
	if (!val || !((/^[A-Z0-9 \-\'\`\.]{1,50}$/i).test(val))){
		$('first-name').addClass("error");
		foundErrors = true;
	}
	else { 
		$('first-name').removeClass("error"); 
	}
	val = $('last-name').value;
	if (!val || !((/^[A-Z0-9 \-\'\`\.]{1,50}$/i).test(val))){
		$('last-name').addClass("error");
		foundErrors = true;
	}
	else { $('last-name').removeClass("error"); }
	
	 val = $('email-address').value;
	 if (!val || !((/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@[\w\.\-]+\.\w{2,}$/i).test(val))){
		$('email-address').addClass("error");
		foundErrors = true;
	 }
	 else { $('email-address').removeClass("error"); }

	val2 = $('email-address-confirm').value;        
	if (!val2 || val2 != val){
		foundErrors = true;
		$('email-address-confirm').addClass("error");
	} else { 
		$('email-address-confirm').removeClass("error"); 
	}
	val = $('nickname').value;
	if (!val || !((/^[A-Z0-9 \-`]{1,50}$/i).test(val))){
		foundErrors = true;
		$('nickname').addClass("error");
	}
	else { 
		$('nickname').removeClass("error"); 
	}
	
	val = $('zip-code').value;
	if ( !val || !((/^[A-Z0-9 \-]{1,10}$/i).test(val)) ){
		$('zip-code').addClass("error");
		foundErrors = true;
	}
	 else { $('zip-code').removeClass("error"); }
	 	
	val = $('birth-year').value;
	if (val == "-1"){
		$('birth-year').addClass("error");
		foundErrors = true;
	}
	else { 
		$('birth-year').removeClass("error"); 
	}

	if (foundErrors){
		$('form-errors').addClass('show');  
		scroll(0,0);
		return false;
	}
	else {  
		$('form-errors').removeClass("show"); 
	}
}

/********************* Email Signup Validation ******************************/
function validateEmailSignup(){
	var foundErrors = false; 
	var val = $('first-name').value;
	if (!val || !((/^[A-Z0-9 \-\'\`\.]{1,50}$/i).test(val))){
		$('first-name').addClass("error");
		foundErrors = true;
	}
	else { 
		$('first-name').removeClass("error"); 
	}
	val = $('last-name').value;
	if (!val || !((/^[A-Z0-9 \-\'\`\.]{1,50}$/i).test(val))){
		$('last-name').addClass("error");
		foundErrors = true;
	}
	else { $('last-name').removeClass("error"); }
	
	val = $('email-address').value;
	if (!val || !((/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@[\w\.\-]+\.\w{2,}$/i).test(val))){
	$('email-address').addClass("error");
	foundErrors = true;
	}
	else { $('email-address').removeClass("error"); }
	
	if (foundErrors){ 
		$('form-errors').addClass('show');
		scroll(0,0);
		return false;
	}
	else {
		$('form-errors').removeClass("show"); 
	 }
}

/********************* Contact us dynamic form block ************************/
function replaceWebsafe(val){
	var srch = new Array('&reg;','&iexcl;','&iacute;','&eacute;','&aacute;','&oacute;','&uacute;','&ntilde;','&iquest;','&amp;','ñ');
	var srch2 = new Array('&#174;','&#161;','&#237;','&#233;','&#225;','&#243;','&#250;','&#241;','&#191;','&');
	var repl = new Array('®','¡','í','é','á','ó','ú','n','¿','&','n');
	for (var i=0; i<srch.length; i++){
		val = val.replace(srch[i],repl[i]);
	}
	for (var i=0; i<srch2.length; i++){
		val = val.replace(srch2[i],repl[i]);
	}
	return val;
}

function updateFlavor(productSelector){
	var val = productSelector.value;
	var flavorSelect = $('flavor');
	//remove the flavor select options
	flavorSelect.length=0;
	
	var sizeSelect = $('size');
	//remove the size select options
	sizeSelect.length=0;
	
	var upcField = $('upc-field');
	//empty the upc field
	upcField.value = "";

	if (val != "-1"){
		flavorSelect.options[flavorSelect.length] =new Option("Select One", "-1");
	
		for (var i=0; i<beanData.length; i++){
			var curProduct = beanData[i];
			var a = typeof(curProduct[0]);
			curProduct[1] = replaceWebsafe(curProduct[1]);
	
			if (a != "string"){ $("datalist").set("html", "error"); }
	
			a = curProduct[0];
			if ( a == val){
				var previouslyAdded = false;
				for (var j=0; j<flavorSelect.length; j++){     
					if (flavorSelect[j].value == curProduct[1]){ previouslyAdded = true; break; }
				}
				if (!previouslyAdded){
					flavorSelect.options[flavorSelect.length] = new Option(curProduct[1], curProduct[1]);
				}
			} 
		}
	}
}

function updateSize(flavorSelector){
	var val = flavorSelector.value;
	var sizeSelect = $('size');
	//remove the size select options
	sizeSelect.length=0;

	var upcField = $('upc-field');
	//empty the upc field
	upcField.value = "";

	if (val != "-1"){
		sizeSelect.options[sizeSelect.length] = new Option("Select One", "-1");

		for (var i=0; i<beanData.length; i++){
			var curProduct = beanData[i];
			curProduct[1] = replaceWebsafe(curProduct[1]);
			if (curProduct[1] == val){
				var previouslyAdded = false;
				for (var j=0; j<sizeSelect.length; j++){     
					if (sizeSelect[j].value == curProduct[1]){ previouslyAdded = true; break; }
				}
				if (!previouslyAdded){
				sizeSelect.options[sizeSelect.length] = new Option (curProduct[2], curProduct[2]);
				}
			}
		}
	}
}

function updateUPC(sizeSelector){
	var productVal = $('product').value;
	var flavorVal = $('flavor').value;
	var sizeVal = $('size').value;

	var upcField = $('upc-field');
	//empty the upc field
	upcField.value = "";

	if (productVal != "-1" && flavorVal != "-1" && sizeVal != "-1"){
		for (var i=0; i<beanData.length; i++){
			var curProduct = beanData[i];
			curProduct[1] = replaceWebsafe(curProduct[1]);
			if (curProduct[0] == productVal && curProduct[1] == flavorVal && curProduct[2] == sizeVal){ 
				upcField.removeClass("error");
				upcField.value = curProduct[3];
				break;
			}
		}
	} 
}

/*
 * Updates the product, flavor, and size selects based on the UPC
 * two passes through beanData
 */ 
function updateSelects(upcField){
	var upcVal = upcField.value;
	var prodEle = $('product');
	var flavEle = $('flavor');
	var sizEle = $('size');
	var product;
	var flavor;
	var flavIndex;
	var size;
	var sizeIndex;	

	if (upcVal == ""){ return; }

	//find this product's info in bean data
	for (var i =0; i<beanData.length; i++){
		var curProduct = beanData[i];
		curProduct[1] = replaceWebsafe(curProduct[1]);
		if (curProduct[3] == upcVal){
			product = curProduct[0];
			flavor = curProduct[1];
			size = curProduct[2];
		}
	}

	//if the upc wasn't found then return
	if (!product){ 
		upcField.addClass("error");
		return; 
	}

	//upc was found
	upcField.removeClass("error");

	//remove the flavor select options
	flavEle.length = 0;

	//remove the size select options
	sizEle.length = 0;

	flavEle.options[flavEle.length] = new Option("Select One", "-1");
	sizEle.options[sizEle.length] = new Option("Select One", "-1");

	//select the correct product from product select
	for (var i=0; i<prodEle.length; i++){
		if (prodEle[i].value == product){ prodEle.selectedIndex = i; break; }
	}

	//select the correct flavor and size
	for (var i=0; i<beanData.length; i++){
		var curProduct = beanData[i];
		curProduct[1] = replaceWebsafe(curProduct[1]);

		if (curProduct[0] == product){
			var previouslyAdded = false;
			for (var j=0; j<flavEle.length; j++){ 
				if (flavEle[j].value == curProduct[1]){
					previouslyAdded = true;
					if (curProduct[3] == upcVal){ flavIndex = j; }
					break;
				}
			}
			if (!previouslyAdded){
				flavEle.options[flavEle.length] = new Option(curProduct[1], curProduct[1]);
				if (curProduct[3] == upcVal){ flavIndex = flavEle.length-1; }
			}
			
		} 
		if (curProduct[1] == flavor){ 
			var previouslyAdded = false;
			for (var j=0; j<flavEle.length; j++){ 
				if (flavEle[j].value == curProduct[2]){
					previouslyAdded = true;
					if (curProduct[3] == upcVal){ sizeIndex = j; }
					break;
				}
			}
			if (!previouslyAdded){
				sizEle.options[sizEle.length] = new Option(curProduct[2], curProduct[2]);
				if (curProduct[3] == upcVal){ sizeIndex = sizEle.length-1; }
			}
			
		}
	}
	flavEle.selectedIndex = flavIndex;
	sizEle.selectedIndex = sizeIndex;
}
/*
 * End product select updates
 */

function showAnswer(num){ 
	$('question-answer-'+num).setStyle('display', 'block');
}

function hideAnswer(e,num){
	if (!e) var e = window.event;
	var relTarg = e.relatedTarget || e.toElement;
	if (relTarg.id){
		if (relTarg.id == 'question-answer-'+num){
			return false;
		}
	}
	$('question-answer-'+num).setStyle('display', 'none');
}

function wordCount(){
	var val = $('comment-box').value;
	var len = val.length;
	var scrollHeight = $('comment-box').scrollHeight;

	if (len > 1500){ 
		$('comment-box').set('value', val.substring(0, 1500));
		$('comment-box').scrollTop = scrollHeight;
	}
	/* length might be one character shorter */
	len = $('comment-box').value.length;
	var lenStr = len+"";

	if( len >= 1000 ){
		$('char-count').set('html', lenStr.substring(0,1)+","+lenStr.substring(1,len)+"/1,500");        
	}
	else {
		$('char-count').set('html', len+"/1,500");
	}
}

function displaySubjectFields(selectedItem){
	var val = $('subject-type').value;

    $$('#lot-code').getParent().setStyle('display','none');
    $$('#production-code').getParent().setStyle('display','none');
    $$('#seamer').getParent().setStyle('display','none');
    $$('#time-code').getParent().setStyle('display','none');
    $$('#cooker').getParent().setStyle('display','none');
    $$('#best-by-month').getParent().setStyle('display','none');
    $$('#best-by-year').getParent().setStyle('display','none');

    if (val == "Inquiry" || val == "Product Feedback"){
      $$('#lot-code').getParent().setStyle('display','block');
      $$('#production-code').getParent().setStyle('display','block');
      if (val == "Product Feedback"){
        $$('#seamer').getParent().setStyle('display','block');
        $$('#time-code').getParent().setStyle('display','block');
        $$('#cooker').getParent().setStyle('display','block');
        $$('#best-by-month').getParent().setStyle('display','block');
        $$('#best-by-year').getParent().setStyle('display','block');
      }
    }
}

/********************* Clear Data function for all forms ********************/
function clearData(){
	$('form-errors').removeClass('show');
	$$('.error').each(function(item) {
		item.removeClass('error');
	});
	
	$$('input').each(function(ele){
		ele.value= "";
	});
	$$('select').each(function(ele){
		ele.selectedIndex = 0;
		if($('contact_us')) {
			displaySubjectFields();
		}	
	});

	//remove comment-box content and recalcualte wordcount
	if($('comment-box')) {
		$('comment-box').value = ""; 
		wordCount();
		scroll(0,0);
	}
}

/********** Clear product, flavor, and size selects ***********/


window.addEvent('load', function() {
	if($('product-details')) {
		 $$("div.pr-snippet-read-reviews a").each(function(item){
		 	item.addEvent('click', function(){
	        	showPage("product-reviews"); 
	            return false;
			});
		});
	}
});

