var itemCode;
var customerID;
var requestType;

function favourite(code, cusid) {
  var fav_sel = document.getElementById("favourite_select");
  if (fav_sel == null) {
    return;
  }
  if (fav_sel.value == 999999) {
    alert("You cannot modify the readonly list [Ordered in last 12 months].");
    return;
  }
  
  var item = document.getElementById("favourite[" + code + "]");
  requestType = "remove";
  if (item.src.indexOf("nonfavourites") > 0)
    requestType = "add";
	
  item.src = "n_images/halffavourites.gif";	
  itemCode = code;
  customerID = cusid;
  sendFavouritesAJAXRequest();
}

function validateFavouritesCallback(responseXML) {
  if (responseXML != "null") {
    var root, isIE;
    if (window.ActiveXObject) {
		  root = new ActiveXObject("Microsoft.XMLDOM");
		  var str = "<formdata>" + responseXML + "</formdata>";
		  root.loadXML(str);		
		  isIE = true;
	  } 
	  else {
	    root = document.createElement("formdata");
      root.innerHTML = responseXML;
      isIE = false;
	  }
    
    elem = root.getElementsByTagName('favourite');
    itemCode = isIE ? elem(0).attributes.getNamedItem("itemcode").text : elem[0].getAttribute("itemcode");
     
    var img;  
    var item = document.getElementById("favourite[" + itemCode + "]");
    
    if (requestType == "add") {
      img = "favourites.gif";
      
      var the_select = document.getElementById("favourite_select");
      var the_index = the_select.selectedIndex;
      var fav_colour = the_select.options[the_index].style.color;

      if (fav_colour != "create" && fav_colour != "edit" && fav_colour != "delete") {
        img = "favourites/"+fav_colour+".gif";
      }
      alt = "Click to remove the item from the favourite list.";
    }
    else {
      img = "nonfavourites.gif";
      alt = "Click to add the item into the favourite list.";
    }
    
    item.src = "n_images/" + img;
    item.alt = alt;
  } 
  
  if (document.getElementById("gotopage").value == "2" ||
      document.getElementById("gotopage").value == "6" ||
      document.getElementById("gotopage").value == "10" ||
      document.getElementById("gotopage").value == "11") {
    stayInCurrentPage();
  }
} 

function changeFavourite() {
  var fav_sel = document.getElementById("favourite_select");
  if (fav_sel == null) {
    return;
  }
  
  var url = "processFavourite.php";
  var parameters;
  var ajax;
  
  if (fav_sel.value == "create") {
    parameters = "actionType=create";

    ajax = new AJAXAction(url, validateModifyFavouritesCallback);
  } else if (fav_sel.value == "edit") {
    parameters = "actionType=edit";
    
    ajax = new AJAXAction(url, validateModifyFavouritesCallback);
  } else if (fav_sel.value == "delete") {
    parameters = "actionType=delete";

    ajax = new AJAXAction(url, validateModifyFavouritesCallback);
  } else if (fav_sel.value == "saveas") {
    parameters = "actionType=saveas";

    ajax = new AJAXAction(url, validateModifyFavouritesCallback);
  } else {
    var url = "processFavourite.php";
    var parameters;
    parameters = "actionType=selectFavourite&favourite_id="+fav_sel.value;

    ajax = new AJAXAction(url, validateSelectFavouritesCallback);
  }
  ajax.doPost(parameters);
}

function validateSelectFavouritesCallback(responseXML) {
  if(responseXML == "updated") {
    top.window.location.href = unescape(top.window.location.pathname)+"?show=custom";
    
    //constructParameters();
  }
}

function validateModifyFavouritesCallback(responseStr) {
  if (responseStr == "readonly") {
    alert("The Default favourite list is not editable.");
    validateModifyListCallback(responseStr);
  } else {
    var toolbar = document.getElementById("labellist");
    var favouritediv = getFavouriteDIV();
    favouritediv.innerHTML = responseStr;

    updatePopupPos();
    favouritediv.style.left = (popupXpos + 265) + "px";
    favouritediv.style.top = (popupYpos + getElementY(toolbar)) + "px";

    var visible = favouritediv.style.visibility;
    if (visible == "hidden") {
  		if (bNotesVisible()) showNotes(false);
      if (bPriceListDivVisible()) showPrice(false);
  		if (bPreferenceVisible()) showPreference(false);
  		if (bLabelTypeVisible()) showLabelType(false);
  		if (bImageTypeVisible()) showImageType(false);
      showFavourite(true);
    }
  }
}

function bFavouriteDivVisible() {
  var favouritediv = getFavouriteDIV();
  if (favouritediv != null) {
    var visible = favouritediv.style.visibility;
    return (visible == "visible") ? true : false;
  }
  else {
    return false;
  }
}

function showFavourite(flag)
{
	var favouritediv = getFavouriteDIV();
	if (favouritediv != null)
	{
		if (flag == true)	favouritediv.style.visibility = "visible";
		else				favouritediv.style.visibility = "hidden";
	}

	if (! flag) focusOnGenus();
}

function getFavouriteDIV() {
  return document.getElementById("favouriteDiv");
}

function saveFavourite(actionType) {
  var url = "processFavourite.php";
  var parameters;
  var ajax;

  parameters = "actionType="+actionType+"&favourite_id="+getEl("favourite_id").value+
    "&list_name="+getEl("list_name").value+"&list_colour="+getEl("list_colour").value;

  ajax = new AJAXAction(url, validateModifyListCallback);
  ajax.doPost(parameters);
}

function validateModifyListCallback(responseStr) {
  if (responseStr == "updated") {
    showFavourite(false);
  } else {
    //alert(responseStr);
  }
  
  top.window.location.href = unescape(top.window.location.pathname);
}