// JavaScript Document
var productTitleKey = "productList";

var jspEmailPath = "/hillspet/products/scienceDiet/culinaryCreationsPopup.hjsp?" + productTitleKey + "=";
var printPreviewPath = "/hillspet/popups/hillsPopup.hjsp?asst=Products/ScienceDiet/CannedCatFood/culinaryCreations_prodSelectorPrint&" + productTitleKey + "=";

var enum_ProductTypes = { Kitten:"ktn", Adult:"adt", Mature:"sen"};
var productDivIDArr = new Array("ktn_NA_o_O_CC_bf",
								"ktn_NA_o_O_CC_chkn",
								"ktn_NA_o_O_n_trkyGib",
								"ktn_NA_o_O_n_samn",
								"ktn_NA_o_O_n_lvrChkn",
								"adt_NA_o_O_SVOE_samn",
								"adt_NA_o_O_SVOE_chkn",
								"adt_NA_o_O_n_trkyGib",
								"adt_NA_o_O_n_trky",
								"adt_NA_o_O_n_seafood",
								"adt_NA_o_O_n_lvrChkn",
								"adt_NA_o_O_n_bf",
								"adt_NA_o_O_CC_bf",
								"adt_NA_o_O_CC_chkn",
								"adt_NA_o_O_CC_oFish",
								"adt_NA_o_O_CC_tuna",
								"sen_NA_o_O_SVOE_chkn",
								"sen_NA_o_O_SVOE_trky",
								"sen_NA_o_O_n_bf",
								"adt_NA_o_O_IND_seafood",
								"adt_NA_o_O_IND_chkn",
								"adt_NA_o_O_HAIR_seafood",
								"adt_NA_o_O_HAIR_chkn",
								"adt_NA_o_LHT_n_orig");

var selectedLifestage;
var selectedTexture;
var selectedNeed;
var selectedFavorite;
//this array changes with user selections...could be any combination of the arrays below
var selectedProductsArr = new Array();
//all divs
var allProductsArr = new Array();
//divs grouped by life stage - implemented but not used this revision.
var productGroupKittenArr = new Array();
var productGroupAdultArr = new Array();
var productGroupMatureArr = new Array();
//sub menu divs - pointless really
var subMenuLevel2;
var subMenuLevel3;
var subMenuLevel4;
var subMenuLevel5;
//global handlers for DOM elements
var kittenMenu;
var adultMenu;
var matureMenu;
var kittenTextureMenu;
var adultTextureMenu;
var matureFavoritesMenu;
var kittenFavoritesMenu;
var adultNeedsMenu;
var adultFavoritesMenu;

addEvent(window, "load", init);
//comprende?
function init()
{
	//resetProducts();
	//document.getElementById("products").style.display = "none";
	document.getElementById("prodSelMainContainer").style.display = "none";
}

function swfGetProdCounts($searchTerm)
{
	
	resetProducts();
	showDivs($searchTerm, allProductsArr);
	//if you only want a count then resetroducts() again.
}

function swfSearchForProducts($searchTerm)
{
	resetProducts();
	showDivs($searchTerm, allProductsArr);
}


function isNestedTerm($term)
{
	var verdict = ($term.indexOf("&&") != -1)? true : false;	
	return verdict;
}

function findInArr($term, $arrayOfDivs)
{
	if($term == "poultry")$term = translateProdCode($term);
	if($term =="seafood") $term = translateProdCode($term);

	if(isNestedTerm($term))
	{
		var nestedTermArr = $term.split("&&");
		var tempArr = new Array();
		
		for(var n =0; n< nestedTermArr.length; n++)
		{
			var nestedTerm =  nestedTermArr[n];
			if(nestedTerm == "poultry") nestedTerm= translateProdCode( nestedTerm);
			if(nestedTerm =="seafood") nestedTerm = translateProdCode( nestedTerm);			
		
			if(isNestedTerm(nestedTerm))
			{
				var doubleNestedArr = nestedTerm.split("&&");		
				for(var z=0; z<doubleNestedArr.length; z++)
				{
					var thisTerm = doubleNestedArr[z];	
					for(var i=($arrayOfDivs.length-1); i>=0; i--)
					{
						var thisDivID = $arrayOfDivs[i].id;
						if(thisDivID.indexOf(thisTerm) > -1)
						{	
							tempArr.push($arrayOfDivs[i]);
						}
					}					
				}
			}
			else
			{	
				var nestedDivArr = $arrayOfDivs;
				for(var i=( nestedDivArr.length-1); i>=0; i--)
				{
					var thisDivID =  nestedDivArr[i].id;
						
					if(nestedTerm.indexOf("!") != -1)
					{
						if(thisDivID.indexOf("_CC_") != -1)
						{
							//alert("!_CC_");
							//do nothing
						}						
						//check for negative filter and remove the only type of div that qualifies (CC) if present
					}
					else
					{
						if(thisDivID.indexOf(nestedTerm) > -1)
						{	
							tempArr.push(nestedDivArr[i]);
						}
					}
				}	
			}
		}
	}
	else
	{
		for(var i=( $arrayOfDivs.length-1); i>=0; i--)
		{
			var thisDivID =  $arrayOfDivs[i].id;
		
			if($term.indexOf("!") != -1)
			{
				//check for negative filter and remove the only type of div that qualifies (CC) if present
				if(thisDivID.indexOf("_CC_") > -1)
				{	
					$arrayOfDivs.splice(i,1);
				}
			}
			else
			{
				if(thisDivID.indexOf($term) == -1) $arrayOfDivs.splice(i,1);
			}
		}	
	}

	if(tempArr)
	{
		//look for matches
		var revisedTempArr = new Array();
		for(var t=0; t<tempArr.length; t++)
		{
			for(var s=0; s< $arrayOfDivs.length; s++)
			{
				if($arrayOfDivs[s].id == tempArr[t].id)
				{
					revisedTempArr.push(tempArr[t].id);
					//alert("match" + tempArr[t].id);			
				}
			}
		}
		
	}
	
	if(tempArr)	return uniqueArr(tempArr);
	else return uniqueArr($arrayOfDivs);
}

function showDivs($term, $arrayOfDivs)
{
	if(hasMultipleTerms($term))
	{
		var firstTerm = $term.substr(0, $term.indexOf("|"));
		var remainingTerm = $term.substr($term.indexOf("|") +1,  $term.length);
		var results = findInArr(firstTerm , $arrayOfDivs);		

		//recursive
		if(results.length > 0)	
		{
			
		showDivs(remainingTerm, results);
		}
		//ADD NO RESULTS FUNCTION CALL HERE
		else 
		{
		showError();
		hideBlurb();
		} 		
	}
	else
	{
		var results = findInArr($term, $arrayOfDivs);
		if(results.length>0)showSelectedProducts(results);	
		else
		{
		showError();
		hideBlurb();
		} 		
		
	}
}


function showSelectedProducts($productArray)
{
	//hide all products
	resetProducts();
	document.getElementById("prodSelMainContainer").style.display = "";
	for(var i=0; i<$productArray.length; i++)
	{
		$productArray[i].style.display = "";	
	}
	swf_updateMatchCount($productArray.length);
}

function reorderSpecialNeeds($arrayOfShowingDivs)
{

	var showingDivLength = $arrayOfShowingDivs.length;
	for(var i=0; i<showingDivLength; i++)
	{
		if($arrayOfShowingDivs[i].id.indexOf("IND") != -1)
		{
		
			$arrayOfShowingDivs[i].style.display = "";
		}
		else if($arrayOfShowingDivs[i].id.indexOf("HAIR") != -1)
		{
			$arrayOfShowingDivs[i].style.display = "";
		}
		else if($arrayOfShowingDivs[i].id.indexOf("LHT") != -1)
		{
			$arrayOfShowingDivs[i].style.display = "";
		}
	}
	for(var i=0; i<showingDivLength; i++)
	{
		//selectedProductsArr.push($productArray[i]);
		$arrayOfShowingDivs[i].style.display = "";	
	}
}

function translateProdCode($filter)
{
	var translation = null;
	switch($filter)
	{
		case "chunks" :
			translation = "_CC_";
		break
		case "minced" :
			translation = "!_CC_";
		break
		case "poultry" : 
			translation = "chkn&&trky&&Chkn&&Gib&&CC_c";
		break;
		case "beef" :
			translation = "bf";
		break;
		case "seafood" : 
			translation = "sea&&Fish&&tuna&&samn";
		break;
		case "indoor" :
			translation = "IND";
		break;
		case "hairball" :
			translation = "HAIR";
		break;
		case "light" :
			translation = "LHT";
		break;
		case "needs" :
			translation = "IND&&HAIR&&LHT";
		break;
	}
	//alert("translate " + translation);
	return translation;
}


function hasMultipleTerms($term)
{
	var verdict = $term.indexOf("|") != -1? true: false;
	return verdict;
}



function uniqueArr(a)
{
	temp = new Array();
	for(i=0;i<a.length;i++){
		if(!contains(temp, a[i])){
			temp.length+=1;
			temp[temp.length-1]=a[i];
		}
	}
	return temp;
}
 
//Will check for the Uniqueness
function contains(a, e)
{
	 for(j=0;j<a.length;j++)if(a[j]==e)return true;
	 return false;
}

function resetProducts()
{
	hideError();
	showBlurb();
	allProductsArr = getElementsByClass("prodBox");
	//hides all prods
	for(var i=(allProductsArr.length-1); i>=0; i--)
	{
		allProductsArr[i].style.display = "none";	
	}
}


function getSelectedProducts()
{
	//get an array of child objects
	allProductsArr = getElementsByClass("prodBox");
	var selectedProductsArr = new Array();
	for(var i=(allProductsArr.length-1); i>=0; i--)
	{
		var thisDivID = allProductsArr[i].id;
		var isVisible = allProductsArr[i].style.display;
		if(isVisible != "none" && allProductsArr[i].getElementsByTagName("input")[0].checked)
		{
			selectedProductsArr.push(allProductsArr[i]);	
		}
	}
	return selectedProductsArr;
}

function printSelections()
{
	//document.forms[0].action = 'the_other_script.pl';
	populateSelectedItems(getSelectedProducts());
	
	var selectedProductDivArr  = getSelectedProducts();
	//document.forms[0].action = 'the_other_script.pl';
	var queryString = "";
	for(var z=0; z<selectedProductDivArr.length; z++)
	{
		queryString += String(selectedProductDivArr[z].id + "|");
	}
	window.open (printPreviewPath+queryString ,"_blank"); 
}

function emailSelections()
{
	var selectedProductDivArr  = getSelectedProducts();
	//document.forms[0].action = 'the_other_script.pl';
	var queryString = "";
	for(var z=0; z<selectedProductDivArr.length; z++)
	{
		queryString += String(selectedProductDivArr[z].getElementsByTagName('a')[0].innerHTML + "|");
	}
	window.open (jspEmailPath+queryString ,"_blank"); 
}

function populateSelectedItems($divArr)
{
	document.getElementById("products").style.display = "";
	resetProducts();
	for(var z=0; z<$divArr.length; z++)
	{
		$divArr[z].style.display = "";
	}
							
}

function swf_updateMatchCount($newValue)
{
	var mySwf = document.getElementById("flashcontent");
	mySwf.js_updateMatchCount($newValue);
}


function showError()
{
	document.getElementById("errorMSG").style.display = "block"; 
}

function hideError()
{
	document.getElementById("errorMSG").style.display = "none"; 
}

function showBlurb()
{
	document.getElementById("printBlurb").style.display = "block"; 
}

function hideBlurb()
{
	document.getElementById("printBlurb").style.display = "none"; 
}

