

 //Add to bag Item  Class
function AddToBagItem() {
  this.prdCode = ""; //product parent code
  this.varCode="";  //product variant code
  this.qty = "";   //the qty to add to bag
}

//Error Message Class
function ProductErrorMessage() {
  
  this.prdCode = "";
  this.varSkuCode="";
  this.errorCode = "";
  this.errorMsg = "";
}

 
 //check the first skintone radio button
 var firstSelectedTone;
 


// Gets Selected SkinTone Value 
function PSCGetSelectedSkinTone(radioObj) {

	if(!radioObj)return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked){
	HighlightSelectedSkinToneImg(radioObj.value);
	DisplaySelectedSkinToneShades(radioObj.value);
		return radioObj.value;}
		else return "";
	}

//Displayes selected skintone filter products and shades
function DisplaySelectedSkinToneShades(skinToneCode) {    
try { 
    
//hide all shade divs
ToogleRoutineShades("fair",false);
ToogleRoutineShades("light",false);
ToogleRoutineShades("medium",false);
ToogleRoutineShades("tan",false);
ToogleRoutineShades("deep",false);

switch(skinToneCode)
{
    case "fair": {  ToogleRoutineShades("fair",true);  break;  }
    case "light": {  ToogleRoutineShades("light",true);  break; }                
    case "medium":  {ToogleRoutineShades("medium",true);break;}                
    case "tan": {ToogleRoutineShades("tan",true);break;}                
    case "deep":{ToogleRoutineShades("deep",true);break;}            

}

 } catch(err) {}
               
}

//Changes the display status of selected skintone filter icon to on
function HighlightSelectedSkinToneImg(skinToneCode){
    //alert(skinToneCode);
var divFair = $get("skintone_div_fair");
var divLight = $get("skintone_div_light");
var divMedium = $get("skintone_div_medium");
var divTan = $get("skintone_div_tan");
var divDeep = $get("skintone_div_deep");

var selectedShadeTitle = $get("selectedShadeTitle");    
if( selectedShadeTitle!=null)selectedShadeTitle.innerHTML=skinToneCode;

//set all icons to off	//filter:OPAC_40;opacity: .40;
if(divFair!=null){divFair.className = "float_L OPAC_40";}
if(divLight!=null){divLight.className = "float_L margin25_L OPAC_40";}
if(divMedium!=null){divMedium.className = "float_L margin25_L OPAC_40";}
if(divTan!=null){divTan.className = "float_L margin25_L OPAC_40";}
if(divDeep!=null){divDeep.className = "float_L margin25_L OPAC_40";}

switch (skinToneCode)
            {      
                case "fair": if(divFair!=null){ divFair.className = "float_L";     }break;
                case "light":if(divLight!=null){divLight.className = "float_L margin25_L";} break;
                case "medium":  if(divMedium!=null){divMedium.className = "float_L margin25_L";}break;
                case "tan":if(divTan!=null){ divTan.className = "float_L margin25_L";}break;
                case "deep":if(divDeep!=null){divDeep.className = "float_L margin25_L";} break;               
            }

}

// Sets selected skintone div on or off
function ToogleRoutineShades(skinToneCode,display){
   var divName='div_skintone_collection_'+skinToneCode;
    var objs= document.getElementsByName(divName);
         
         for( i=0;i<objs.length;i++){
           var obj1=objs[i];           
             if (obj1!=null) 
             {  if (display==true) { obj1.style.display=""; }
                   else  {   obj1.style.display="none"; }
             }
                                    }

}


/******************** Skin Tone Shades Scripts ***********************/

//global var to hold all products by skintone 
var products_fair= new Array();
var products_light= new Array();
var products_medium= new Array();
var products_tan= new Array();
var products_deep= new Array();

 
 function showHideMultiShoppingCartBubble(display){
 var MultiShoppingCartBubble   = $get("ShoppingCartBubble_Div"); 
      if(MultiShoppingCartBubble!=null)
                   { 
                  
                 if(display==true){
                  MultiShoppingCartBubble.style.display="";
                 MultiShoppingCartBubble.style.visibility="visible";
                 }else{
                 MultiShoppingCartBubble.style.display="none";
                 MultiShoppingCartBubble.style.visibility="hidden";
                 
                 }
      }
 }
 
 
 function showHideMultiShoppingCartBubbleErrorMsg(errorMsg,display){
 var  MultiShoppingCartBubble_ErrorMsg_Div   = $get("MultiShoppingCartBubble_ErrorMsg_Div"); 
var   MultiShoppingCartBubble_ErrorMsg_Text   = $get("MultiShoppingCartBubble_ErrorMsg_Text"); 
  
      if(MultiShoppingCartBubble_ErrorMsg_Div!=null)
                   { 
                  
                 if(display==true){
                  MultiShoppingCartBubble_ErrorMsg_Div.style.display="";
                 MultiShoppingCartBubble_ErrorMsg_Div.style.visibility="visible";               
                 }else{
                 MultiShoppingCartBubble_ErrorMsg_Div.style.display="none";
                 MultiShoppingCartBubble_ErrorMsg_Div.style.visibility="hidden";
                 }
    if(MultiShoppingCartBubble_ErrorMsg_Text!=null){ MultiShoppingCartBubble_ErrorMsg_Text.innerHTML=errorMsg;}
      }
 }
 
//intializeds selected shades on page refresh
function PSCInitializeOnPageLoad(skinToneCode){

var tempProducts=new Array();
var selectedAddToCartProducts= new Array();
 switch(skinToneCode)
    {              
    case "fair": {  tempProducts=products_fair; break;  }
    case "light":{  tempProducts=products_light; break;  }             
    case "medium":  {  tempProducts=products_medium; break;  }          
    case "tan": {  tempProducts=products_tan; break;  }             
    case "deep":{  tempProducts=products_deep; break;  }
    
    }   
    
 //hide shopping cart bubble and reset error message
showHideMultiShoppingCartBubble(false);
showHideMultiShoppingCartBubbleErrorMsg("",false);

    for(var i=0;i<tempProducts.length;i++){ 
   
   //hide all shopping cart bubble items
    PSCHideShowShoppingBubbleCartItem(tempProducts[i],false);
    var selectedShadeDropDownList=$get(tempProducts[i]+"_varlist_"+skinToneCode);
    if(selectedShadeDropDownList!=null){
            if(selectedShadeDropDownList.length>1)
                {
                //call PSCSelectShade function to initialize first variant from 'select name' drop down list
                PSCSelectShade(selectedShadeDropDownList[0].value,skinToneCode);  
               
                }
    }
      
      }    
           
}

//Displays 'Selected skintone shade not available' message when skintone filter has not shades
function DisplayNoSelectedShadesAvailMsg(prdCode,skinToneCodeDiv,display)
{
shadesNotAvailMessageName=prdCode+"_no_shades_avail_"+skinToneCodeDiv.toLowerCase();
//column 4 holds qty and price

var column4Name="div_"+prdCode+"_Column4_"+skinToneCodeDiv.toLowerCase();


//column 5 holds 'add to cart' / 'out of stock' message
var column5Name="div_"+prdCode+"_Column5_"+skinToneCodeDiv.toLowerCase();


//alert(shadesNotAvailMessageName);
var shadesNotAvailMessage=$get(shadesNotAvailMessageName);
     
var column4Obj=$get(column4Name);
var column5Obj=$get(column5Name);

if(shadesNotAvailMessage!=null){
  if(display==true){shadesNotAvailMessage.style.display=""; }
  else{  shadesNotAvailMessage.style.display="none";}
     }


if(column4Obj!=null){
  if(display==true){column4Obj.style.visibility="hidden"; }
  else{ column4Obj.style.visibility="visible";}
     }


if(column5Obj!=null){
  if(display==true){column5Obj.style.visibility="hidden"; }
  else{   column5Obj.style.visibility="visible";}
     }
}

//Displays 'select shade' drop down , shade image and shade name if shades exist for skinttone color filter
function DispalyShadeNameDropDownAreaControls(prdCode,skinToneCodeDiv,display)
{

//get the drop down div area
shadesDropDownDivName=prdCode+"_dropdownlist_div_"+skinToneCodeDiv.toLowerCase();

//get the variant name label
swatchTitleName=prdCode+"_swatchName_"+skinToneCodeDiv.toLowerCase();
//get the varient image box
swatchLargeImageName=prdCode+"_swatchLargeImage_"+skinToneCodeDiv.toLowerCase();

var shadesDropDownDiv=$get(shadesDropDownDivName);
var swatchTitleObj=$get(swatchTitleName);
var swatchLargeImageObj=$get(swatchLargeImageName);



if(shadesDropDownDiv!=null){

  if(display==true){shadesDropDownDiv.style.display="";}
  else{  shadesDropDownDiv.style.display="none";}
     }
     
     if(swatchTitleObj!=null){
  if(display==true){swatchTitleObj.style.display=""; }
  else{  swatchTitleObj.style.display="none";}
     }
     
     if(swatchLargeImageObj!=null){
  if(display==true){swatchLargeImageObj.style.display=""; }
  else{  swatchLargeImageObj.style.display="none";}
     }

}

 
 //Initializes selected shade display settings 
function PSCSelectShade(varListIDStr, skinToneCode,backorderMessageID)
{

	if (varListIDStr==null || varListIDStr=="") return;
	
	var prdParentCode="";	
	var varSku="";
	var varName="";
	var varHexCode="";
	var varPrice="";
	var stockQty=0;

	if (varListIDStr.indexOf("#") != -1){	 
	  var _selectedvalue_array=varListIDStr.split("#");
        prdParentCode= _selectedvalue_array[0];
		varSku=  _selectedvalue_array[1];
		varPrice =_selectedvalue_array[2];
		stockQty =_selectedvalue_array[3];		
	    varHexCode =  "#"+_selectedvalue_array[4];
	   // alert(prdParentCode+" - "+ varSku+" - "+varPrice +" - "+stockQty+" - "+varHexCode);
	}
 	 
 	 PSCManagePrdAddToCartCheckBox(prdParentCode,stockQty,skinToneCode);
 	
	var selectedShadeName=PSCGetSelectedShadeName(prdParentCode,skinToneCode);

	PSCSetProductSwatchColorAndName(prdParentCode,varSku,varHexCode, selectedShadeName,skinToneCode);	
	
}


//This function either shows 'out of stock' message or 'add to cart' checkbox
function PSCManagePrdAddToCartCheckBox(prdParentCode,stockQty,skinToneCode) {

var addToCartCheckBox = $get(prdParentCode+"_addtocart_checkbox_"+skinToneCode);
var addToCartMessage =  $get(prdParentCode+"_addtocart_msg_"+skinToneCode);
  
  
    if (PSCIsVariantInStock(stockQty)) {
    addToCartCheckBox.disabled="";    
    addToCartMessage.innerHTML="add to cart";
   
    }
    else {
     
    addToCartCheckBox.checked="";
     addToCartCheckBox.disabled="disabled";
    addToCartMessage.innerHTML="out of stock";
    }   
}

//This function returns true if variant is in stock and false if it is out of stock
function PSCIsVariantInStock(stockQty) {
 if (AJAX_ENABLE_OUTOFSTOCK==false) return true; //if not enabled return true so treats everything in stock
 var _IsInStock=false; 
 var StockTresHold=AJAX_GetTresHoldNumber();
 if (stockQty!=null) {  
 if (parseInt(stockQty)>StockTresHold) { _IsInStock=true;  }
                 
 }
       
   return  _IsInStock;
}


// Sets a selected shade's swatch box status to on 
function PSCHightlightSelectedSwatch(shadeDropDownListObj,selectedSkuCode,skinToneCode)
{
 if(shadeDropDownListObj!=null){
 
 for (var i=0; i< shadeDropDownListObj.options.length; i++)	
 {
        str = shadeDropDownListObj.options[i].value;	
		
		if (str.indexOf("#") != -1){	 
	      var _selectedvalue_array=str.split("#");
	      str=  _selectedvalue_array[1];	     
	      }
	        var varSmallSwatchName=str+"_swatchSmallImage_"+skinToneCode;
			var varSmallSwatchObj =$get(varSmallSwatchName);			
            
			if (str==selectedSkuCode)
			{			
			//turn swatch on
			 if( varSmallSwatchObj!=null){varSmallSwatchObj.className = "SWATCH_ON"; }
             
             //select it in it's drop down list  
             shadeDropDownListObj.options[i].selected  =true;
		
			}else{
			//turn swatch off
			if( varSmallSwatchObj!=null){ varSmallSwatchObj.className = "SWATCH_OFF"; } }
			
			} 
 }

}

// Sets product's variant swatch Color and Name when a new shade is selected
function PSCSetProductSwatchColorAndName(prdParentCode,variantSKU,swatchColorCode, variantName,skinToneCode)
{
 
   
  var varSwatchName=prdParentCode+"_swatchName_"+skinToneCode;
  var varLargeSwatchName=prdParentCode+"_swatchLargeImage_"+skinToneCode;
  var varSmallSwatchName=variantSKU+"_swatchSmallImage_"+skinToneCode;
  
  var varSwatchObj =$get(varSwatchName);
  var varLargeSwatchObj =$get(varLargeSwatchName);
  
  
  if(varSwatchObj!=null){ varSwatchObj.innerHTML = variantName; }
  if(varLargeSwatchObj!=null&& swatchColorCode.length>1){ varLargeSwatchObj.style.background=swatchColorCode; }   
   
  var  shadeDropDownListID=prdParentCode+"_varlist_"+skinToneCode;
  //alert(shadeDropDownListID);
  var  shadeDropDownListObj=$get(shadeDropDownListID);
   PSCHightlightSelectedSwatch(shadeDropDownListObj,variantSKU,skinToneCode);
   
  //PSCUpdateShoppingCartProductInfo(prdParentCode,skinToneCode);
  
   
   //set shopping bag bubble items
}



//update shopping cart bubble's product price and variant name
function PSCUpdateShoppingCartProductInfo(productCode,skinToneCode)
{  
  
   var ShoppingCartBubble_VariantNameStr =  productCode+"_ShoppingCartBubble_VariantName";
   var ShoppingCartBubble_ItemQuantityStr = productCode+"_ShoppingCartBubble_ItemQuantity";
   
   var ShoppingCartBubble_VariantNameObj  = $get(ShoppingCartBubble_VariantNameStr);
   var ShoppingCartBubble_ItemQuantityObj = $get(ShoppingCartBubble_ItemQuantityStr);   
  
  var selectedShadeName=PSCGetSelectedShadeName(productCode,skinToneCode);
 
  if(selectedShadeName!=null && selectedShadeName.length>0){
   if(ShoppingCartBubble_VariantNameObj!=null){ ShoppingCartBubble_VariantNameObj.innerHTML = selectedShadeName; }
     }
  
  var prdQty=PSCGetSelectedProductQty(productCode,skinToneCode);      
   if(ShoppingCartBubble_ItemQuantityObj!=null){ ShoppingCartBubble_ItemQuantityObj.innerHTML = prdQty; }                                   
                                        

}

//returns the selected shade name for a selected product
function PSCGetSelectedShadeName(productCode,skinToneCode) {

	var varlistID=productCode+"_varlist_"+skinToneCode;	
	//alert("varlistID"+varlistID);    
	 var objdrp=$get(varlistID);
     if (objdrp!=null) {
     _varName=objdrp.options[objdrp.selectedIndex].text;         
        // alert(_varName);
           return _varName;                 
     }
     else { return ""; }

}

//returns the selected product price
function PSCGetSelectedProductQty(productCode,skinToneCode) {

var prdQtyIDStr=productCode+"_qtylist_"+skinToneCode;	
	
	 var objdrp=$get(prdQtyIDStr);
     if (objdrp!=null) {
     var _prdQty=objdrp.options[objdrp.selectedIndex].text;         
        
           return _prdQty;                 
     }
     else { return 1; }
     
     
}


//returns the selected variant sku code
function PSCGetSelectedVariantSKU(productCode,skinToneCode) {

	var varlistID=productCode+"_varlist_"+skinToneCode;	
	var objdrp=$get(varlistID);
     if (objdrp!=null && objdrp.length>0 ) {     
     var selectedValue=objdrp.options[objdrp.selectedIndex].value; 
   
   
	  var _selectedvalue_array=selectedValue.split("#");      
	  var varSku=  _selectedvalue_array[1];		      
      return varSku;                 
     }
     else { return ""; }

}

//Gets add to bag variant codes
function PSCGetAddToBasketItems(skinToneCode){
var tempProducts=new Array();
var selectedAddToCartProducts= new Array();  

var selectedAddToBagItems= new Array();//to be returned
 switch(skinToneCode)
{              
    case "fair": {  tempProducts=products_fair; break;  }
    case "light":{  tempProducts=products_light; break;  }             
    case "medium":  {  tempProducts=products_medium; break;  }          
    case "tan": {  tempProducts=products_tan; break;  }             
    case "deep":{  tempProducts=products_deep; break;  }
    
    }
    
    var addToCartCount=0;
    for(var i=0;i<tempProducts.length;i++){
        var prdAddToCartCheckBox=$get(tempProducts[i]+"_addtocart_checkbox_"+skinToneCode);
      
  if(prdAddToCartCheckBox!=null){
             if( prdAddToCartCheckBox.checked)
                {
                //get selected variant
                  selectedAddToCartProducts[addToCartCount]=tempProducts[i];
                  addToCartCount++; 
                }
            }
    }
           
      
    
       for(var i=0;i<selectedAddToCartProducts.length;i++)
       {
            
            var prdCode=selectedAddToCartProducts[i];     //parent product       
            var varCode=PSCGetSelectedVariantSKU(prdCode,skinToneCode);     //variant code
            var varQty=PSCGetSelectedProductQty(prdCode,skinToneCode);   //qty
            var   addtoBagItem= new AddToBagItem();
            
            addtoBagItem.prdCode=prdCode;
            addtoBagItem.varCode=varCode;
            addtoBagItem.qty=varQty;
            selectedAddToBagItems[i]=addtoBagItem;
            
      }
      
      return selectedAddToBagItems;     
}


//global var 
var selectedSkinToneFilterCode="";
//Adds Selected Products to bag
function AddSelectedProductsToBag(skinToneCode)
{
var selectedAddToBagItems= new Array();//to be returned
selectedAddToBagItems=PSCGetAddToBasketItems(skinToneCode);

        
      var selectedVarSKU= new Array();
      var selectedVarQty=new Array();           
            
   if(selectedAddToBagItems.length>0)
   {
            
            for(var i=0;i<selectedAddToBagItems.length;i++)
            {
            
            var addToBagItems=selectedAddToBagItems[i]; 
           
            selectedVarSKU[i]=addToBagItems.varCode;
            selectedVarQty[i]=addToBagItems.qty;
           
           }        
         
          selectedSkinToneFilterCode=skinToneCode;
           //add to bag
         _WebServiceAPI.AddMultipleProductsToCart(GetCurrentCustomerID(),selectedVarSKU,selectedVarQty,AddMultipleProductOnComplete);
         
          
   }
           else{
           alert("Please select a product to add to bag");
           }
}






//Parses an error message string and returns a JSON object of ErrorMessages 
//Recieved from WebService in the format {"ErrorMessages":[ {"PrdParentCode": "", "PrdParentName": "", "VariantCode": "", "VariantName": "", "VariantDescription": "", "ErrorCode": "", "ErrorMessage": "" }]}

function GetErrorMessagesForProducts(errorString){
//Construct JSON Object. 
if(errorString!=null  )
{
    try{
    var jsonErrorMessages = eval('(' + errorString + ')');
    return jsonErrorMessages;}
    catch(err){}
}
 else {return null;}
}



//AddMultipleProductOnComplete Handler
 function AddMultipleProductOnComplete(result) {
               DoDefault();
 try {
          
        //  if(result.ActivityStatus!=null && result.ActivityStatus==false){}
        //    alert("Status:"+result.ActivityStatus+"\nError:"+result.ErrorString);
         var  productJSONErrorMessages=  GetErrorMessagesForProducts(result.ErrorString);
               
         var  selectedAddToBagItems=PSCGetAddToBasketItems(selectedSkinToneFilterCode);
          PSCDisplayShoppingCartBubble(selectedSkinToneFilterCode,selectedAddToBagItems,productJSONErrorMessages)
          if (result != null) {
          
          
          //display the shopping cart totatls
           _WebServiceAPI.RetrieveShoppingCart(GetCurrentCustomerID(),_ShoppingCartBubble_Class.RetrieveShoppingCartResultHandler);
        }
         //reset value
         selectedSkinToneFilterCode="";
     
         
}
        catch (err) { alert(err);}
      
       
//var sURL = unescape(window.location.pathname);
//refresh to update basket
 //window.location.href = sURL;
   
            
}

//Hides or Show ShoppingCartItem in the shopping cart bubble
function PSCHideShowShoppingBubbleCartItem(prdParentCode,display){
var productDivID=prdParentCode+"_ShoppingCartBubbleProduct_Display_DIV";
 var productDivObj=$get(productDivID);
     if (productDivObj!=null) 
     {  
         if(display==true){
         productDivObj.style.display="";
         productDivObj.style.visibility="visible";
         }else{
         productDivObj.style.display="none";
         productDivObj.style.visibility="hidden";
         }
     }
      

}

//Display Shopping bag bubble div. 
//allProductErrorMessagesArray is an array of ProductErrorMessage Objs
function PSCDisplayShoppingCartBubble(SkinToneCode,selectedAddToBagItems,productJSONErrorMessages)
{
   var productsWithErrorStr=""; 
   var allProductErrorMessagesArrayStr="";   
  
   //hide all shopping cart bubble items
   for(var i=0;i<products_fair.length;i++){       
    PSCHideShowShoppingBubbleCartItem(products_fair[i],false);
    }
    
 
 if(productJSONErrorMessages!=null )
 {
   for(var x=0;x<productJSONErrorMessages.ErrorMessages.length;x++)
      { try{
        allProductErrorMessagesArrayStr+= productJSONErrorMessages.ErrorMessages[x].VariantCode+" "; 
        //Product   is 
        //alert(productJSONErrorMessages.ErrorMessages[x].VariantName.length+" "+productJSONErrorMessages.ErrorMessages[x].VariantName);
       var variantName=productJSONErrorMessages.ErrorMessages[x].VariantName.length>1?"<br>"+productJSONErrorMessages.ErrorMessages[x].VariantName:"";
       productsWithErrorStr+=productJSONErrorMessages.ErrorMessages[x].PrdParentName+variantName+"<br>"+ productJSONErrorMessages.ErrorMessages[x].ErrorMessage+"<br><br>";         
         } catch(err){}                
      }  
  }   
  
 
   for(var i=0;i<selectedAddToBagItems.length;i++)
 { 
     var  varCode=selectedAddToBagItems[i].varCode;
     var  prdCode=selectedAddToBagItems[i].prdCode;  
     var searchKey=varCode;
     var searchResult=  allProductErrorMessagesArrayStr.search(searchKey);     
     if(searchResult==-1)           
            {          
              
              PSCUpdateShoppingCartProductInfo(prdCode,SkinToneCode);
              PSCHideShowShoppingBubbleCartItem(prdCode,true);
              
            }        
                
              
 } 
 
 //display error message is any exists
 if(productsWithErrorStr.length>1){ 
 showHideMultiShoppingCartBubbleErrorMsg(productsWithErrorStr,true);
 }else{
 showHideMultiShoppingCartBubbleErrorMsg("",false);
 }
         
   //now show the shopping cart bubble
showHideMultiShoppingCartBubble(true);
      
        
}



//returns selected shade hex code for color
function PSCGetSelectedShadedHexCode(productCode,skinToneCode) {
	var varlistID=productCode+"_varlist_"+skinToneCode;	
	 var objdrp=$get(varlistID);
     if (objdrp!=null) {         
          var str=objdrp.options[objdrp.selectedIndex].value;
          var _selectedvalue_array=str.split("#");
        _varcolor =  "#"+_selectedvalue_array[4];
          if(_varcolor.length<2){
         //  alert("not valid code");
     return "";
    
     } else{      
         
        // alert(_varcolor);
           return _varcolor; 
        
     }       
       
     }
     else { return ""; }


}
