function onFacetValueCheckBoxClick(facetValueControl, facetSelectedValueControlId){
   var hdfSelectedValueControl = window.document.getElementById(facetSelectedValueControlId);
   if (hdfSelectedValueControl.value ==""){
      hdfSelectedValueControl.value = facetValueControl.getAttribute("facetId")+ "#";
   }
   if (!facetValueControl.checked){
      removeSelectedValue(hdfSelectedValueControl, facetValueControl.value);
   } else {
      removeSelectedValue(hdfSelectedValueControl, facetValueControl.value);
      addNewSelectedValue(hdfSelectedValueControl, facetValueControl.value);
   }
   //alert(hdfSelectedValueControl.value);
}

function addListener(element, type, expression, bubbling)
{
	bubbling = bubbling || false;
 
	if(window.addEventListener) { // Standard
		element.addEventListener(type, expression , bubbling);
		return true;
	} else if(window.attachEvent) { // IE
		element.attachEvent('on' + type, expression);
		//alert("aa");
		return true;
	} else return false;
}
/*functions for beverage solutions facet control*/
function selectedFacetIndexChanged(dropdow, contentUlID, facetSelectedValueControlId, fieldName) {
   if (BP_arrBSOFacet == undefined){
    alert("Unexpected error occur when init facet control !");
    return;
   }
   var contentUl = window.document.getElementById(contentUlID);
   ClearAllChildControls(contentUl);
   var facetId = dropdow.options[dropdow.selectedIndex].value;
   resetFacetSelectedValue(dropdow,facetSelectedValueControlId);
   if (facetId=="0") {
    return;
   }
   RebuildAllValueCheckBoxs(contentUl, facetId, facetSelectedValueControlId, fieldName);
}

function RebuildAllValueCheckBoxs(contentUl, facetId, facetSelectedValueControlId, fieldName) {
   // var allfacetTextValuesId = fieldName + "_hdfAllFacet" + facetId + "TextValue";
   // var allfacetIdValuesId = fieldName + "_hdfAllFacet" + facetId + "IdValue";
   // var hdfAllfacetTextControl = window.document.getElementById(allfacetTextValuesId);
   // var hdfAllfacetIdControl = window.document.getElementById(allfacetIdValuesId);
   // if (hdfAllfacetTextControl.value == "" || hdfAllfacetIdControl.value == ""){
      // return;
   // }
   // var facetValueTextArray = hdfAllfacetTextControl.value.split("###");
   // var facetValueIdArray = hdfAllfacetIdControl.value.split("###");
   if (BP_arrBSOFacet == undefined){
    alert("Unexpected error occur when init facet control !");
    return;
   }
   var facetValueArray = BP_arrBSOFacet[facetId];
   for (key in facetValueArray){
      AddACheckBoxFacetValue(contentUl, facetId, key, facetValueArray[key], facetSelectedValueControlId);
   }
}

function AddACheckBoxFacetValue(contentControl, facetId, facetValueId, facetValueTitle, facetSelectedValueControlId){
   //<li> element
      var li = window.document.createElement("li"); 
      //checkbox
      var checkBox = document.createElement('input');
      checkBox.type = "checkbox";
      checkBox.value = facetValueId;
      checkBox.id = contentControl.id + "_" + facetValueId;
      checkBox.setAttribute("facetId", facetId);
      addListener(checkBox, "click", function(){onFacetValueCheckBoxClick(checkBox, facetSelectedValueControlId);});
      //label
      var label = window.document.createElement("label");
      //label.attributes["for"] = checkBox.id;
      label.innerHTML = facetValueTitle;
      li.appendChild(checkBox);
      li.appendChild(label);
      
      contentControl.appendChild(li);
}

function ClearAllChildControls(parentControl){
   parentControl.innerHTML = "";
}

function resetFacetSelectedValue(dropdow,facetSelectedValueControlId){
   var hdfSelectedValue = window.document.getElementById(facetSelectedValueControlId);
   hdfSelectedValue.value= dropdow.options[dropdow.selectedIndex].value + "#";
   if (dropdow.options[dropdow.selectedIndex].value == "0"){
        hdfSelectedValue.value = "";
   }
}  


function removeSelectedValue(selectedControl, removedValue){
   var oldFacetIdValueIdArray = selectedControl.value.split("#");
   if (oldFacetIdValueIdArray.length ==2){
      var oldeValueArray = oldFacetIdValueIdArray[1].split(",");
      var newValueArray = new Array();
      for (var i=0;i < oldeValueArray.length; i++){
         if (oldeValueArray[i] != removedValue){
            newValueArray.push(oldeValueArray[i]);
         }
      }
      oldFacetIdValueIdArray[1] = newValueArray.join(",");
      selectedControl.value = oldFacetIdValueIdArray.join("#");
   }
}

function addNewSelectedValue(selectedControl, newValue){
   var oldFacetIdValueIdArray = selectedControl.value.split("#");
   if (oldFacetIdValueIdArray.length ==2){
      // If have value : facetId#facetID_Value1Id,facetID_Value2Id,...
      if (oldFacetIdValueIdArray[1] == ""){
         oldFacetIdValueIdArray[1] += newValue;
      } else {
         oldFacetIdValueIdArray[1] += "," + newValue;
      }
      selectedControl.value = oldFacetIdValueIdArray.join("#");
   } else {
      //Default hidden field value : facetId#
      selectedControl.value += newValue;
   }
   
}

function LoadCurrentFacetData(dropdowId, contentUlID, facetSelectedValueControlId, fieldName) {
   var dropdow = window.document.getElementById(dropdowId);
   var hdfFieldValueControl = window.document.getElementById(facetSelectedValueControlId);
   //alert(hdfFieldValueControl);
   var currentControlValue = hdfFieldValueControl.value;
   if (currentControlValue == ""){
      //Set default value
      dropdow.selectedIndex = 0 ;
      hdfFieldValueControl.value = "";
      return;
   }
   //selectedFacetIndexChanged(dropdow, contentUlID, facetSelectedValueControlId, fieldName);
   
   var arrayFacetIdAndValues = hdfFieldValueControl.value.split("#");
   if (arrayFacetIdAndValues.length == 2){
      var facetId = arrayFacetIdAndValues[0];
      var contentUl = window.document.getElementById(contentUlID);
      RebuildAllValueCheckBoxs(contentUl, facetId, facetSelectedValueControlId, fieldName);
      var valueArray = arrayFacetIdAndValues[1].split(",");
      
      for (var i=0; i< valueArray.length; i++){
            var checkBoxId = contentUl.id + "_" + valueArray[i];
            var checkBox = window.document.getElementById(checkBoxId);
            if (checkBox != "undefined"){
               checkBox.checked = true;
            }
      }
   }
}