var AJAX_SHOPPINGCART_POWER_SYSTEM="AJAX_SHOPPINGCART_POWER_SYSTEM";
var AJAX_SHOPPINGCART_POWER_SYSTEM_PRODUCTS="AJAX_SHOPPINGCART_POWER_SYSTEM_PRODUCTS";

/// Promotion Proximity Constants
var AJAX_SHOPPINGCART_LAYER_PROMO_MESSAGE = "AJAX_SHOPINGCART_LAYER_PROMO_MESSAGE";
var AJAX_SHOPPINGCART_PROMO_MESSAGE = "AJAX_SHOPINGCART_PROMO_MESSAGE";
var AJAX_SHOPPINGCART_PROMO_DISTANCE_TYPES = "BasketPriceEvaluator,CustomerSegmentEvaluator";
var AJAX_SHOPPINGCART_PROMO_DISTANCE_COUNT = 1;
var AJAX_SHOPPINGCART_PROMO_DISTANCE_BECOME_MEMBER_MESSAGE = "sign in for free shipping over $50!";
var AJAX_SHOPPINGCART_PROMO_DISTANCE_I_AM_A_MEMBER_MESSAGE = "You are eligible for Free Shipping!";
// Other constants
var AJAX_DEFAULT_RTLCODE="LOREAL";
var POWER_SYSTEM_ASSOCIATION_NAME='LookProducts'
//
var AJAX_varlist="varlist";
var AJAX_QtyList="QtyList";

//Filter before the BBB
//var AJAX_LANCOME_VARIANT_FILTER_EXPRESSION_1="Isnull(isbeautybyebye,'Null Column') = 'Null Column'  or isbeautybyebye<>'2'";
//Filter After displaying BBB set to empty
var AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_1="isnull(Discontinued_Variant,'Null Column') = 'Null Column'  or Discontinued_Variant<>'2'";
// this will be used for discontinued page quick shop bubbles
var AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_2="Discontinued_Variant='1'";

var DISCONT_VIEWDETAILS_PROD_TEMPLATE='<a href="$$$AJAX_ProductRelativePath$$$product.aspx?CatCode=$$$AJAX_ProductCategoryCode$$$&prdcode=$$$AJAX_ParentProductCode$$$" ><img src="/IMG/BTN_VwDtls.gif" alt="view details" border="0" /></a>';
var DISCONT_VIEWDETAILS_PROD_TEMPLATE_URL_REWRITTEN='<a href="$$$AJAX_ProductRelativePath$$$$$$AJAX_ProductURLRewrittenHomePage$$$?cm_mmc=QuickShopLink" ><img src="/IMG/BTN_VwDtls.gif" alt="view details" border="0" /></a>';

var NO_PROD_TO_SHOW_LOOKPRODUCTS_CROSSEL = 2

//assign  modal popup custom events
_CoreModalPopUp.beforeOpen="modalBeforeOpen"; 
_CoreModalPopUp.beforeClose="modalBeforeClose";
//

//
function modalBeforeOpen() {
  if (AJAX_IsIE6()) {
       ToggleDropDowns('hidden');
       
  }

}

//
function modalBeforeClose() {
    if (AJAX_IsIE6()) {
      ToggleDropDowns('visible');
     
    }
}
//assign shopping cart events
_ShoppingCartBubble_Class.beforeOpen="ShoppingCartBeforeOpen"; 
_ShoppingCartBubble_Class.beforeClose="ShoppingCartBeforeClose";

var _loadPowerSystem=true;
var _loadLastItem=true;

function ShoppingCartBeforeOpen() {
 
  // step 1
  try {
     if (_loadPowerSystem) {
            GetPowerSystem();
     }
     if (_loadLastItem) {
       GetLastShoppingCartItemParentProdutData();
     }
    }
    catch(err) {
  
    }
    if (AJAX_IsIE6()) {
        ToggleDropDowns('hidden');
    }        
  //step 2
   try {
        // The promotion distance calculator was not returning the distance correctly when the customer was not signed in
        // so for anonamous users there is no need to call Promotion Proximity WS and simply show the default message
        if (CustomerSigned==true) {
            GetPromotionProximity(true);  
        }
        else {
            var obj=$get(AJAX_SHOPPINGCART_LAYER_PROMO_MESSAGE);
            if ( obj!=null) 
            {
                obj.style.display="";
                obj.innerHTML = AJAX_SHOPPINGCART_PROMO_DISTANCE_BECOME_MEMBER_MESSAGE;
            }
        }
    }
    catch(err) {
     DoDefault();
   }  
}

//
function ShoppingCartBeforeClose() {
    if (AJAX_IsIE6()) {
        ToggleDropDowns('visible');
    }      
}
function GetLastShoppingCartItemParentProdutData(){
    _WebServiceAPI.LoadProduct(_LastShoppingCartItem.ItemParentCode,false,'GetLastShoppingCartItemParentProdutDataOnComplete');
    
}
function GetLastShoppingCartItemParentProdutDataOnComplete(result){
    
    if (result != null)    {
                var makeupProductHasSingleImage = _ProductBubble_Class.GetPropertyValue(result.Properties,"Has_Single_Image");    
                if ( result.CategoryPath.indexOf("AXEMakeup") != -1 && makeupProductHasSingleImage != "1" ) {
                     var objimage=$get(_ShoppingCartBubble_Class.ShoppingCartBubble_ProductImageID);
                    if (objimage!=null) {
                        objimage.src=IMAGES_RELATIVE_OR_ABSOLUTE_PATH + PRODUCT_SMALL_IMAGE_PREFIX  + _LastShoppingCartItem.ItemCode +  PRODUCT_SMALL_IMAGE_SUFFIX;
                        
                    }
                }
               
        }
}
function GetPowerSystem(){
     var obj=$get(AJAX_SHOPPINGCART_POWER_SYSTEM);
      if ( obj!=null) {
        obj.style.display="none";
      }
      var obj2=$get('AJAX_COMPLETE_MESSAGE');
      if ( obj2!=null) {
        obj2.style.display="none";
      }
      
     _WebServiceAPI.GetProductAssociations(AJAX_DEFAULT_RTLCODE,_LastShoppingCartItem.ItemCode,POWER_SYSTEM_ASSOCIATION_NAME,false,'DisplayPowerSystemOnComplete');
}


function DisplayPowerSystemOnComplete(result){
       DoDefaultWithoutEvent();
        var obj=$get(AJAX_SHOPPINGCART_POWER_SYSTEM);
         var obj2=$get('AJAX_COMPLETE_MESSAGE');
         //
        
         if (result!=null) {
            if ( obj!=null) {
                obj.style.display="block";
            }
             if ( obj2!=null) {
                obj2.style.display="block";
            }
           var sb = new StringBuilder();
           var sbprdnames= new StringBuilder();
           //sb.append("<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">");
           //sb.append("<tr>");
           //sbprdnames.append("<tr>");
            for (var i=0; i < result.length && i < NO_PROD_TO_SHOW_LOOKPRODUCTS_CROSSEL; i++)  {
                var IsVariant=true;
                var HasShades=false;
                if (result[i].ParentName=="") {
                 IsVariant=false;
                }
                if (result[i].HasShades) {
                 HasShades=true;
                }
                // there are only two products to show
                if ( i==0 )
                    sb.append('<div style="width:100px" class="float_L">');
                else
                    sb.append('<div style="width:100px" class="float_R">');
                // makeup products has some accessories cross sells and for those we need to tacke it as parent products as those dont have any variant images like
                // make up proucts which has different images for varaints
                if (IsVariant==true && result[i].CategoryPath.indexOf('AXEAccessories') == -1 ) { //related product is a variant
                    sb.append('<div><img src="/img/product/packshot/' + result[i].SKU + '_sm.jpg\" width="100" height="100" /></div>');
                    sb.append('<div  align="center" class="margin05_T ABLACK12_R LH_16">' + result[i].ParentName +  result[i].Name +'</div>');                            
                    if (HasShades) {                            
                           sb.append('<div class="margin03_T"><img onclick="_QuickShop_Class.SetFilterAndShowBubble(\''+ result[i].SKU + '\',true,false,AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_1)" src="/IMG/BTN_QckShp.gif" alt="Quick Shop" border="0" style="cursor:pointer"/></div>');                            
                    }
                    else {
                           sb.append('<div class="margin03_T"><img onclick="_QuickShop_Class.SetFilterAndShowBubble(\'' + result[i].SKU + '\',true,false,AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_1)" src="/IMG/BTN_QckShp.gif" alt="Quick Shop" border="0" style="cursor:pointer"/></div>');                  
                    }
                } else if (IsVariant==true && result[i].CategoryPath.indexOf('AXEAccessories') != -1 ) { //related product is a variant of accessories and we need to show product images and product quick shop
                   sb.append('<div><img src="/img/product/packshot/' + result[i].ParentProductCode + '_sm.jpg" width="100" height=\"100\" /></div>');
                   sb.append('<div  align="center" class="margin05_T ABLACK12_R LH_16">' + result[i].ParentName + '</div>');                                                
                   if (HasShades) {
                         sb.append('<div class="margin03_T"><img onclick="_QuickShop_Class.SetFilterAndShowBubble(\'' + result[i].ParentProductCode + '\',false,true,AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_1)" src="/IMG/BTN_QckShp.gif" alt="Quick Shop" border="0" style="cursor:pointer"/></div>');
                   }
                   else {
                         sb.append('<div class="margin03_T"><img onclick="_QuickShop_Class.SetFilterAndShowBubble(\'' + result[i].ParentProductCode + '\',false,false,AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_1)" src="/IMG/BTN_QckShp.gif" alt="Quick Shop" border="0" style="cursor:pointer"/></div>');                    
                   }
                }
                else { //is a parent product                                 
                   sb.append('<div><img src="/img/product/packshot/' + result[i].SKU + '_sm.jpg" width="100" height=\"100\" /></div>');
                   sb.append('<div  align="center" class="margin05_T ABLACK12_R LH_16">' + result[i].Name + '</div>');                                                
                   if (HasShades) {
                         sb.append('<div class="margin03_T"><img onclick="_QuickShop_Class.SetFilterAndShowBubble(\'' + result[i].SKU + '\',false,true,AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_1)" src="/IMG/BTN_QckShp.gif" alt="Quick Shop" border="0" style="cursor:pointer"/></div>');
                   }
                   else {
                         sb.append('<div class="margin03_T"><img onclick="_QuickShop_Class.SetFilterAndShowBubble(\'' + result[i].SKU + '\',false,false,AJAX_SUAOB_VARIANT_FILTER_EXPRESSION_1)" src="/IMG/BTN_QckShp.gif" alt="Quick Shop" border="0" style="cursor:pointer"/></div>');                    
                   }
                }
                sb.append('</div>');
//                if (IsVariant==true) {
//                   sbprdnames.append("<td class=\"Amedgrey09pxR\"><div align=\"center\">" +result[i].ParentName + "<br>" + result[i].Name + "</div></td>");
//                }
//                else {
//                   sbprdnames.append("<td class=\"Amedgrey09pxR\"><div align=\"center\">" + result[i].Name + "</div></td>");
//                }
//                if(result.length>1) {
//                 if (i<parseInt(result.length)-1) { //separator
//                       sb.append("<td><img src=\"/images/plus_sm_ICN.gif\" width=\"12\" height=\"12\" /></td>");
//                      sbprdnames.append("<td class=\"Amedgrey09pxR\"><div align=\"center\"></div></td>");
//            
//                  }
//                }
             }
             
//            sb.append("</tr>");  
//            sb.append(sbprdnames.toString());
//            sb.append("</table>");  
            
         var objpowersystem=$get(AJAX_SHOPPINGCART_POWER_SYSTEM_PRODUCTS);
         if (objpowersystem!=null) {
            
             objpowersystem.innerHTML= sb.toString();
        }
      }
          if (AJAX_IsIE6()) {
                ToggleDropDowns('hidden');               
        }
}

function GetPromotionProximity(forShopBagLayer)
{
       var obj=$get(AJAX_SHOPPINGCART_PROMO_MESSAGE);
      if (obj!=null)
      {
        obj.style.display="none";
      }
      if ( typeof(forShopBagLayer) != 'undefined' && forShopBagLayer )
        _WebServiceAPI.GetPromotionProximity(CurrentCustomerID, AJAX_SHOPPINGCART_PROMO_DISTANCE_COUNT, AJAX_SHOPPINGCART_PROMO_DISTANCE_TYPES, null, 'DisplayPromotionProximityShopBagLayerOnComplete',false);
      else{
        _WebServiceAPI.GetPromotionProximity(CurrentCustomerID, AJAX_SHOPPINGCART_PROMO_DISTANCE_COUNT, AJAX_SHOPPINGCART_PROMO_DISTANCE_TYPES, null, 'DisplayPromotionProximityOnComplete',false);
       
      }  
}

function DisplayPromotionProximityOnComplete(result)
{
    var obj=$get(AJAX_SHOPPINGCART_PROMO_MESSAGE);
     DoDefaultWithoutEvent();
    // Display the results 
    
    if (result!=null) 
    {
        if ( obj!=null) 
        {
            obj.style.display="";
        }
       if (result[0]!=null && typeof(result[0]!='undefined')) {
             // For now assume we are going to only display the information
            // from the first distance returned.                   
            if (result[0].EvaluatorType == "CustomerSegmentEvaluator")
            {
               if (CustomerSigned==false) {
                obj.innerHTML = AJAX_SHOPPINGCART_PROMO_DISTANCE_BECOME_MEMBER_MESSAGE;
              }
              else {
                  obj.innerHTML  =AJAX_SHOPPINGCART_PROMO_DISTANCE_I_AM_A_MEMBER_MESSAGE;
              }
            }
            else
            {
                obj.innerHTML = result[0].PromotionTextWithComputedDistance;
            }
        }
        else { //assume like there is a promotion and display the messages above, on this case nothing was being returned.
             alert('nothing was being returned');
            if (CustomerSigned==false) {
                obj.innerHTML = AJAX_SHOPPINGCART_PROMO_DISTANCE_BECOME_MEMBER_MESSAGE;
              }
              else {
                  obj.innerHTML  =AJAX_SHOPPINGCART_PROMO_DISTANCE_I_AM_A_MEMBER_MESSAGE;
              }
        }
    } else{
        alert('no results');
    }
    
      
}

function DisplayPromotionProximityShopBagLayerOnComplete(result){
    
    var obj=$get(AJAX_SHOPPINGCART_LAYER_PROMO_MESSAGE);
     DoDefaultWithoutEvent();
    // Display the results 
    
    if (result!=null) 
    {
      if (result[0]!=null && typeof(result[0]!='undefined' && obj!=null)) {
             // For now assume we are going to only display the information
            // from the first distance returned.                
            if (result[0].EvaluatorType == "CustomerSegmentEvaluator")
            {
               if (CustomerSigned==false) {
                obj.innerHTML = AJAX_SHOPPINGCART_PROMO_DISTANCE_BECOME_MEMBER_MESSAGE;
              }
              else {
                  obj.innerHTML  =AJAX_SHOPPINGCART_PROMO_DISTANCE_I_AM_A_MEMBER_MESSAGE;
              }
            }
            else
            {
                obj.innerHTML = result[0].PromotionTextWithComputedDistance;
            }
        }
        else { //assume like there is a promotion and display the messages above, on this case nothing was being returned.
           
            if (CustomerSigned==false) {
                obj.innerHTML = AJAX_SHOPPINGCART_PROMO_DISTANCE_BECOME_MEMBER_MESSAGE;
              }
              else {
                  obj.innerHTML  =AJAX_SHOPPINGCART_PROMO_DISTANCE_I_AM_A_MEMBER_MESSAGE;
              }
        }
    } else{
        alert('no results');
    }
}