var setfilter = new Array();
var setproductVariants = new Array();
var settooltips = new Array();
var settooltipsNo = -1;
var setvariantError = new Array();

function setBagButtons_set (loopcount) {
	var isVariation = checkIsVariation_set(loopcount);
	var SelectedFilter = getSelectedFilter_set(loopcount);
	
	$('#divOutofStock' + loopcount).css ('display', 'none');
	$('#divActions' = loopcount).css ('display', 'block');

	if (isVariation && setproductVariants[loopcount].length > 0) {
		$('#pid' + loopcount).val (setproductVariants [loopcount][SelectedVariant].ID);

		if (setproductVariants [loopcount][SelectedVariant].price != setproductVariants [loopcount][SelectedVariant].salesprice) {
			$('#standardPrice' + loopcount).html (setproductVariants [loopcount][SelectedVariant].price);
		}
		$('#salesPrice' + loopcount).html (setproductVariants [loopcount][SelectedVariant].salesprice);
		$('#divPriceVariant' + loopcount).css ('display', 'block');
		$('#divPriceDefault' + loopcount).css ('display', 'none');
		$('#divAvailability' + loopcount).css ('display', 'block').html (stockMessage.get (setProductVariants [loopcount][SelectedVariant].ID));
		$('#divOutofStock' + loopcount).css ('display', 'none');
		$('#divActions' + loopcount).css ('display', 'block');
		$('#divunderaddtobag' + loopcount).css ('display', 'none');
	} else {	
		if (setproductVariants[loopcount].length > 0) {
			document.getElementById('divPriceVariant'+loopcount).style.display = 'none';
		}
		document.getElementById('divPriceDefault'+loopcount).style.display = 'block';
		document.getElementById('divAvailability'+loopcount).style.display = 'none';
	}
}

function checkDefaultSelection_set() {
	var isVariation = checkIsVariation_set (_loopcount);
	var SelectedFilter = getSelectedFilter_set (_loopcount);

	//Set color default selection if none is selected.
	//This applies to a variation master with all variants with no inventory
	var selected_color = false;
	var selected_inseam = false;
	var unique_size = false;

	for (x = 0; x < setfilter[_loopcount].length; x++) {
		if (setfilter[_loopcount][x].ID == 'color' || (setfilter[_loopcount][x].ID == 'inseam' && setfilter[_loopcount][x].value.length == 1)) {
			for (y = 0; y < setfilter[_loopcount][x].value.length; y++) {
				if(setfilter[_loopcount][x].value[y].selected != null) { selected_color = true; }
			}
			if(!selected_color) { setfilter[_loopcount][x].selected = 0; }
		}
	}
	// Unique inseam
	for (x = 0; x < setfilter[_loopcount].length; x++) {
		if (setfilter[_loopcount][x].ID == 'inseam' && setfilter[_loopcount][x].value.length == 1) {
			for (y = 0; y < setfilter[_loopcount][x].value.length; y++) {
				if (setfilter[_loopcount][x].value[y].selected != null) { selected_inseam = true; }
			}
			if (!selected_inseam) { setfilter[_loopcount][x].selected = 0; }
		}
	}
	// Set Selection for Unique Size
	for (x = 0; x < setfilter[_loopcount].length; x++) {
		if (setfilter[_loopcount][x].ID == 'size' && 'UNS' == setfilter[_loopcount][x].value[0]) {
			for (y = 0; y < setfilter[_loopcount][x].value.length; y++) {
				if(setfilter[_loopcount][x].value[y].selected != null) { unique_size = true; }
			}
			if (!unique_size) { setfilter[_loopcount][x].selected = 0; }
		}
	}
	setBagButtons_set (_loopcount);
}

function isShowFilter_set(n) {
	result = false;

	for (var x = 0; x < allShowFilter.length; x++) {
		if(allShowFilter[x] == n) { result = true; }
	}
	return result;
}

function isShowTooltip_set(n) {
	result = false;
	
	for (var x = 0; x < allShowTooltip.length; x++) {
		if(allShowTooltip[x] == n) { result = true; }
	}
	return result;
}

function getSelectedFilter_set(loopcount) {
	var SelectedFilter = new Array();

	for (a = 0; a < setfilter[loopcount].length; a++) {
		if (setfilter[loopcount][a].selected != null) { SelectedFilter.push(a); }
	}
	return SelectedFilter; 
}

function checkIsVariation_set(loopcount) {
	return setSelections_set(loopcount);//Return isVariation (true or false)
}

function viewUnavailableMessage_set(loopcount) {
	newMessage = setfilter[loopcount][0].displayValue[setfilter[loopcount][0].selected] + " " + unavailableMessage + " ";

	for (x = 1; x < setfilter[loopcount].length; x++) {
		(x > 1) ? newMessage += ', ' : 0;
		newMessage += setfilter[loopcount][x].displayValue[setfilter[loopcount][x].selected];
	}
	$('#unavailableDivInner').html (newMessage);	
	$('#unavailableDiv').css ('display', 'block');
	$('#divAvailability'+loopcount).css ('display', 'block');	
	$('#divAvailability'+loopcount).html (outofstockMessage);
	$('#divOutofStock'+loopcount).style ('display', 'block');
	$('#divActions'+loopcount).css ('display', 'none');
	$('#divunderaddtobag'+loopcount).css ('display', 'none');
}

function setSelections_set(loopcount) {
	isVariation = false;

	if (setfilter[loopcount].length > 0) {
		SelectedVariant = null;
		_isVariation = 0;

		SelectedFilter = getSelectedFilter_set(loopcount);

		for (x = 0; x < setfilter[loopcount].length; x++) {
			if (setfilter[loopcount][x].ID == "color") {
				color = setfilter[loopcount][x].value[setfilter[loopcount][x].selected];
				shownColor = color;
				selectedColor = color;
			}
			if (setfilter[loopcount][x].value.length == 1 && setfilter[loopcount][x].value[0] == "O/S") {
	        //document.getElementById(setfilter[loopcount][x].ID+"_O/S").style.display = "none";
	        document.getElementById('pSizes'+loopcount).style.display = "none";
	        document.getElementById('SizeChart'+loopcount).style.display = "none";
	        document.getElementById('one_color'+loopcount).style.display = "block";
	        document.getElementById('one_color'+loopcount).innerHTML = document.getElementById('sm_color'+loopcount).innerHTML;
	        document.getElementById('sm_color'+loopcount).style.display = "none";
	       } 
	       
	       
	       	      	       
		 }
	
	
	   for(a=0;a<setfilter[loopcount].length;a++)
	    {
	     for(b=0;b<setfilter[loopcount][a].value.length;b++)
	      {
	       setfilter[loopcount][a].style[b]=setfilter[loopcount][a].StyleOffDefault;
	       isActiv=false;
	       _isActiv=0;
	       
	       for(c=0;c<setproductVariants[loopcount].length;c++)
	        {
	         _isVariation=0;
	         
	         
	         for(d=0;d<SelectedFilter.length;d++)
	          {
	           if(SelectedFilter[d]==a)
	            {
	             if(setproductVariants[loopcount][c][setfilter[loopcount][SelectedFilter[d]].ID] == setfilter[loopcount][a].value[b])
	              {
	               _isActiv++;
	              }
	            } 
	           else
	            {
	             if(setproductVariants[loopcount][c][setfilter[loopcount][SelectedFilter[d]].ID] == setfilter[loopcount][SelectedFilter[d]].value[setfilter[loopcount][SelectedFilter[d]].selected] && setproductVariants[loopcount][c][setfilter[loopcount][a].ID] == setfilter[loopcount][a].value[b])
	              _isActiv++;
	            }
	          }
	         
	         for(d=0;d<setfilter[loopcount].length;d++)
	          { 
	           if(setproductVariants[loopcount][c][setfilter[loopcount][d].ID] == setfilter[loopcount][d].value[setfilter[loopcount][d].selected])_isVariation++;
	          }
	         if(setfilter[loopcount].length==_isVariation)
	          {
	           isVariation=true;  
	           SelectedVariant=c;
	          }
	         
	         if(SelectedFilter.length<=_isActiv)
	          {
	           setfilter[loopcount][a].style[b]=setfilter[loopcount][a].StyleDefault;
	           isActiv=true;
	          }
	         else
	          {
	           setfilter[loopcount][a].style[b]=setfilter[loopcount][a].StyleOffDefault;
	           _isActiv=0;
	          }
	           
	        }
	        
	        if(setfilter[loopcount][a].selected==b)
	         {
	          if(isActiv)	setfilter[loopcount][a].style[b]=setfilter[loopcount][a].StyleSelected;
	          else 			setfilter[loopcount][a].style[b]=setfilter[loopcount][a].StyleOffSelected;
	         }        
	        
	        if('size'==setfilter[loopcount][a].ID && 1==setfilter[loopcount][a].value.length && 'UNS'==setfilter[loopcount][a].value[0]){
	        }else{
	        document.getElementById(setfilter[loopcount][a].ID+"_"+setfilter[loopcount][a].value[b]+"_"+loopcount).className=setfilter[loopcount][a].style[b];
	       }
	    }
	 }
	  
	   for(x=0;x<setfilter[loopcount].length;x++)
	    {
	     if(setfilter[loopcount][x].selected!=null)
	      {
		   document.getElementById("idDiv"+setfilter[loopcount][x].ID+"Name").innerHTML=setfilter[loopcount][x].displayValue[setfilter[loopcount][x].selected];
		   if(x==0)
		    document.getElementById("sm_"+setfilter[loopcount][x].ID+loopcount).innerHTML=setfilter[loopcount][x].displayValue[setfilter[loopcount][x].selected];
		   else
		    document.getElementById("sm_"+setfilter[loopcount][x].ID+loopcount).innerHTML=""+setfilter[loopcount][x].displayValue[setfilter[loopcount][x].selected];
		  }
		 else
		  {
		   document.getElementById("idDiv"+setfilter[loopcount][x].ID+"Name").innerHTML="";
		   document.getElementById("sm_"+setfilter[loopcount][x].ID+loopcount).innerHTML="";
	      }
	    }
    }
   else
    {
     shownColor = selectedColor;
     isVariation = true;
    }
   return isVariation;
  }
 
 
 
 
 
 function variantClick_set(thisObject,typ,filterID,filterValueID,filterNo,loopcount)
  {
   for(x=0;x<setfilter[loopcount].length;x++)
    {
     if(setfilter[loopcount][x].ID==filterID)
      {
       if(setfilter[loopcount][x].selected==filterValueID)
        {
         //setfilter[loopcount][x].selected=null;
        }
       else
        {
         setfilter[loopcount][x].selected=filterValueID;
        }
      }     
    }

	setSelections_set(loopcount);
 
    //ADD TO BAG Button
	setBagButtons_set(loopcount);

 	if(getSelectedFilter_set(loopcount).length == setfilter[loopcount].length)
    {
	   if(!checkIsVariation_set(loopcount))
	    {
	     viewUnavailableMessage_set(loopcount);
	    } else {
	     document.getElementById("unavailableDiv").style.display = "none";
	    }
	}
		
	switch(setfilter[loopcount][filterNo].ID)
	 {
	 	case "color":
	 		reloadProductImage(filter[filterNo].value[filterValueID]); 
	 	break;
	 }
	


  }

 function variantOver_set(thisObject,typ,filterID,filterValueID,filterNo,settooltipsNo,loopcount)
  {
   if(setfilter[loopcount][filterNo].style[filterValueID]==setfilter[loopcount][filterNo].StyleOffDefault || setfilter[loopcount][filterNo].style[filterValueID]==setfilter[loopcount][filterNo].StyleOffSelected)
    document.getElementById(setfilter[loopcount][filterNo].ID+"_"+setfilter[loopcount][filterNo].value[filterValueID]+"_"+loopcount).className=setfilter[loopcount][filterNo].StyleOffOver;
   else
    document.getElementById(setfilter[loopcount][filterNo].ID+"_"+setfilter[loopcount][filterNo].value[filterValueID]+"_"+loopcount).className=setfilter[loopcount][filterNo].StyleOver;


   lastSelected = setfilter[loopcount][filterNo].selected;
   
   //setfilter[loopcount][filterNo].selected = filterValueID;

   if(getSelectedFilter_set(loopcount).length == setfilter[loopcount].length)
    {
	   if(!checkIsVariation_set(loopcount))
	    {
	     viewUnavailableMessage_set(loopcount);
	    }
	   else
	    {
	     document.getElementById("unavailableDiv").style.display = "none";
	    }
	} 	
   setfilter[loopcount][filterNo].selected = lastSelected;
   
   /* if (lastSelected != null)
   {
   	if(setfilter[loopcount][filterNo].style[lastSelected]==setfilter[loopcount][filterNo].StyleOffDefault || setfilter[loopcount][filterNo].style[lastSelected]==setfilter[loopcount][filterNo].StyleOffSelected)
   		document.getElementById(setfilter[loopcount][filterNo].ID+"_"+setfilter[loopcount][filterNo].value[lastSelected]+"_"+loopcount).className=setfilter[loopcount][filterNo].StyleOffOver;	
   	else	
   		document.getElementById(setfilter[loopcount][filterNo].ID+"_"+setfilter[loopcount][filterNo].value[lastSelected]+"_"+loopcount).className=setfilter[loopcount][filterNo].StyleOver;
   } */	
    
  }
 function variantOut_set(thisObject,typ,filterID,filterValueID,filterNo,loopcount)
  {
   setSelections_set(loopcount);
   if(setfilter[loopcount][filterNo].style[filterValueID]==undefined)
	document.getElementById(setfilter[loopcount][filterNo].ID+"_"+setfilter[loopcount][filterNo].value[filterValueID]+"_"+loopcount).className=setfilter[loopcount][filterNo].StyleDefault;
   else
    document.getElementById(setfilter[loopcount][filterNo].ID+"_"+setfilter[loopcount][filterNo].value[filterValueID]+"_"+loopcount).className=setfilter[loopcount][filterNo].style[filterValueID];
  
   if(getSelectedFilter_set(loopcount).length == setfilter[loopcount].length)
    {
	   if(!checkIsVariation_set(loopcount))
	    {
	     viewUnavailableMessage_set(loopcount);
	    }
	   else
	    {
	     document.getElementById("unavailableDiv").style.display = "none";
	    }
	 }
  }
 
 
 function writeVariation_sets(_filter,_tooltip,divOverTitle,divOverTitleStyle,divOverContentStyle,StyleDefault,StyleOver,StyleSelected,StyleOffDefault,StyleOffOver,StyleOffSelected,prodIdx)
  {	
	if (prodIdx) { 
	for(x=0;x<setfilter[prodIdx].length;x++)
    {
     if(setfilter[prodIdx][x].ID==_filter)
      filterNo=x;
    }
   for(x=0;x<settooltips[prodIdx].length;x++)
    {
     if(settooltips[prodIdx][x].ID==_tooltip)
      settooltipsNo=x;
    }  
   
   setfilter[prodIdx][filterNo].StyleDefault = StyleDefault;
   setfilter[prodIdx][filterNo].StyleOver = StyleOver;
   setfilter[prodIdx][filterNo].StyleSelected = StyleSelected;
   setfilter[prodIdx][filterNo].StyleOffDefault = StyleOffDefault;
   setfilter[prodIdx][filterNo].StyleOffOver = StyleOffOver;
   setfilter[prodIdx][filterNo].StyleOffSelected = StyleOffSelected;
   
   
   var ShowTyp="div";
   var toImg=new Array("color");
   var newOutput="";
   
   for(x=0;x<toImg.length;x++)
    {
     if(setfilter[prodIdx][filterNo].ID==toImg[x])
     ShowTyp="img";
    }
    
   //document.write("<div style=\"display:none;\" class=\""+divOverTitleStyle+"\">"+divOverTitle+"&nbsp;<span id=\"idDiv"+setfilter[_loopcount][filterNo].ID+"Name\" class=\""+divOverContentStyle+"\"  ></span></div>");
   var overTitle = "<div style=\"display:none;\" class=\""+divOverTitleStyle+"\">"+divOverTitle+"&nbsp;<span id=\"idDiv"+setfilter[prodIdx][filterNo].ID+"Name\" class=\""+divOverContentStyle+"\"  ></span></div>"
   
   if('size'==setfilter[prodIdx][filterNo].ID && 1==setfilter[prodIdx][filterNo].value.length && 'UNS'==setfilter[prodIdx][filterNo].value[0]){
    newOutput+="<a class='lnkVariant'><div id='"+setfilter[prodIdx][filterNo].ID+"_"+setfilter[prodIdx][filterNo].value[0]+"'>One Size</div></a>";
   } else {
   for(x=0;x<setfilter[prodIdx][filterNo].value.length;x++)
    {
     newOutput+="<a class=\"lnkVariant\" onClick=\"variantClick_set(this,'"+ShowTyp+"','"+setfilter[prodIdx][filterNo].ID+"',"+x+","+filterNo+","+prodIdx+")\" onMouseOver=\"variantOver_set(this,'"+ShowTyp+"','"+setfilter[prodIdx][filterNo].ID+"',"+x+","+filterNo+","+settooltipsNo+","+prodIdx+")\" onMouseOut=\"variantOut_set(this,'"+ShowTyp+"','"+setfilter[prodIdx][filterNo].ID+"',"+x+","+filterNo+","+prodIdx+")\">";
     
     if(ShowTyp=="img")
      newOutput+="<img src=\""+imageURL.replace(codeImageCode,setfilter[prodIdx][filterNo].value[x])+"\" class=\""+StyleDefault+"\"";
     else
      newOutput+="<div class=\""+StyleDefault+"\"";
      
     newOutput+=" id=\""+setfilter[prodIdx][filterNo].ID+"_"+setfilter[prodIdx][filterNo].value[x]+"_"+prodIdx+"\" alt=\""+setfilter[prodIdx][filterNo].displayValue[x]+"\">";
     
     if(ShowTyp!="img")
      newOutput+=setfilter[prodIdx][filterNo].value[x]+"</div>";
     
     newOutput+="</a>";
    }
 }  
   
   newOutput = overTitle + newOutput;
   
   return newOutput;
  }
  }

function createFilter_set(ID,name,value,displayValue)
 {
  if(isShowFilter_set(ID))
   {
	  var count=setfilter[_loopcount].length;
	  
	  setfilter[_loopcount][count] = new Object();
	  setfilter[_loopcount][count].ID = ID;
	  setfilter[_loopcount][count].name = name;
	  setfilter[_loopcount][count].value = value.split(",");
	  setfilter[_loopcount][count].value.pop();
	  setfilter[_loopcount][count].displayValue = displayValue.split(",");
	  setfilter[_loopcount][count].displayValue.pop();
	  setfilter[_loopcount][count].selected = null;
	  setfilter[_loopcount][count].style = new Array(setfilter[_loopcount][count].value.length);  
	  
	  if(setfilter[_loopcount][count].value.length == 1 && setfilter[_loopcount][count].value[0] == "O/S")
	   {
	    setfilter[_loopcount][count].selected = 0;
	   }
   }
   else if(isShowTooltip_set(ID))
   			{
   			  	var count=settooltips[_loopcount].length;
	  
	  			settooltips[_loopcount][count] = new Object();
	  			settooltips[_loopcount][count].ID = ID;
				settooltips[_loopcount][count].name = name;
	  			settooltips[_loopcount][count].value = value.split(",");
	  			settooltips[_loopcount][count].value.pop();
	  			settooltips[_loopcount][count].displayValue = displayValue.split(",");
	  			settooltips[_loopcount][count].displayValue.pop();
	  			settooltips[_loopcount][count].selected = null;
	  			settooltips[_loopcount][count].style = new Array(settooltips[_loopcount][count].value.length);
   			}
 }
 
function createProductVariants_set(ID,Filter,FilterValue,price,salesprice,isDefault)
 {
  var count=setproductVariants[_loopcount].length;
  var _Filter = Filter.split(",");
      _Filter.pop();
  var _FilterValue = FilterValue.split(",");
      _FilterValue.pop();
      
  Filter = new Array();
  FilterValue = new Array();
  
      
  for(x=0;x<_Filter.length;x++)
   {
    if(isShowFilter_set(_Filter[x]))
     {
      Filter.push(_Filter[x]);
      FilterValue.push(_FilterValue[x]);
     }
   }

  setproductVariants[_loopcount][count] = new Object();
  setproductVariants[_loopcount][count].ID = ID;
  setproductVariants[_loopcount][count].price = price;
  setproductVariants[_loopcount][count].salesprice = salesprice;
    
  for(x=0;x<Filter.length;x++)
   {
    setproductVariants[_loopcount][count][Filter[x]] = FilterValue[x];
   }

  if(isDefault)
   {
	/*   
    for(x=0;x<setfilter[_loopcount][0].value.length;x++)
     {
      if(setfilter[_loopcount][0].value[x]==FilterValue[0])
       setfilter[_loopcount][0].selected = x;
     }
    */
    for(x=0;x<Filter.length;x++)
     {
      if(setfilter[_loopcount][x].ID == 'color')
       { 
    	for(y=0;y<setfilter[_loopcount][x].value.length;y++)
     	{
      		if(setfilter[_loopcount][x].value[y]==FilterValue[x])
       			setfilter[_loopcount][x].selected = y;
       	}
       }	
     }    
   }
 }

function AddtoCart_set(loopcount,xproductID)
 {
  var underbag = jQuery('#divunderaddtobag'+loopcount);	
  var quantity = jQuery('#Quantity').value;
  
  // Single Products	
  if (setproductVariants[loopcount].length == 0 && setfilter[loopcount].length == 0)
  {
   top.MiniCart.cartAdd(formID,loadingAnimation);
   if(isOrderable[loopcount] == true && document.getElementById('Quantity').value > 0)
   {
    document.getElementById('divunderaddtobag'+loopcount).style.display = 'block';
    underbag.update(addproductMessage);
   }
  }
  else
  {
   // Variation Products	  		 	
   var isVariation = checkIsVariation_set(loopcount);
   var SelectedFilter = getSelectedFilter_set(loopcount);
   var found;
   setvariantError[loopcount] = [];
   underbag.update('');
   
   if (SelectedFilter.length == setfilter[loopcount].length)
   {
   	if (isVariation && setproductVariants[loopcount].length > 0)
   	{
		if(quantity == 0 || empty(quantity) || isNaN(quantity)) 
   		{
   			document.getElementById('Quantity').value = 1;
   			document.getElementById(xproductID).value = 1
   		} else {
   	 		// Check for maximum quantity
			if (parseInt(quantity) > maxQuantityNo)
			{
				document.getElementById('divunderaddtobag'+loopcount).style.display = 'block';
				underbag.update(maxQtyMessage);
			} else {
				top.MiniCart.cartAdd(formID,loadingAnimation);
   				document.getElementById('divunderaddtobag'+loopcount).style.display = 'block';
   				underbag.update(addproductMessage);
			}
		}
   	}
   	else
   	{
   	 viewUnavailableMessage_set(loopcount);	
   	} 	
   }
   else
   {
    for (x=0;x<setfilter[loopcount].length;x++)
    {
     found = false;
     for (y=0;y<SelectedFilter.length;y++)
     { 	
      if (SelectedFilter[y] == x)
      {
       found = true;
      }
     }
     if (found == false)
     {
      setvariantError[loopcount].push(setfilter[loopcount][x].ID);
     }
    }
	if (setvariantError[loopcount].length > 1)
	{
	 underbag.update(selectSizeInseamMessage);	
	}
	else
	{
	 switch (setvariantError[loopcount][0])
	 {
	  case "size":
	  	underbag.update(selectSizeMessage);
	  	break;
	  case "inseam":
	  	underbag.update(selectInseamMessage);
	  	break;
	 }
	}  
   }
  }
 }
