var massFavDeleteFlag = false;

var cartEmptyText = new Array();
cartEmptyText["ca"] = "El carret&#243; est&#224; vuit.";
cartEmptyText["es"] = "El carro esta vacio.";
cartEmptyText["en"] = "The cart is empty.";

var popupTitleText = new Array();
popupTitleText["ca"] = "Instruccions especials";
popupTitleText["es"] = "Instrucciones especiales";
popupTitleText["en"] = "Special Instructions";

var popupDescText = new Array();
popupDescText["ca"] = "Pot escriure una nota per dir-nos com vol aquest producte.";
popupDescText["es"] = "Puede escribir una nota para decirnos como quiere este producto.";
popupDescText["en"] = "You may write us a note about how you want this product.";

var popupCloseText = new Array();
popupCloseText["ca"] = "Tancar";
popupCloseText["es"] = "Cerrar";
popupCloseText["en"] = "Close";

var popupNoShowText = new Array();
popupNoShowText["ca"] = "No mostrar més";
popupNoShowText["es"] = "No mostrar más";
popupNoShowText["en"] = "Don't show this";

var itemLabelText = new Array();
itemLabelText["ca"] = "Article";
itemLabelText["es"] = "Artículo";
itemLabelText["en"] = "Item";

var itemQtyText = new Array();
itemQtyText["ca"] = "Quant.";
itemQtyText["es"] = "Cant.";
itemQtyText["en"] = "Qty.";

var itemTotalText = new Array();
itemTotalText["ca"] = "Total";
itemTotalText["es"] = "Total";
itemTotalText["en"] = "Total";

var itemEachText = new Array();
itemEachText["ca"] = "c/u";
itemEachText["es"] = "c/u";
itemEachText["en"] = "each";

var itemIVAText = new Array();
itemIVAText["ca"] = "IVA";
itemIVAText["es"] = "IVA";
itemIVAText["en"] = "VAT";

var itemBaseText = new Array();
itemBaseText["ca"] = "Base";
itemBaseText["es"] = "Base";
itemBaseText["en"] = "Base";

var itemCurrPriceText = new Array();
itemCurrPriceText["ca"] = "Preu actual";
itemCurrPriceText["es"] = "Precio actual";
itemCurrPriceText["en"] = "Current price";

var itemNDText = new Array();
itemNDText["ca"] = "No disponible";
itemNDText["es"] = "No disponible";
itemNDText["en"] = "Not available";

var showDetailText = new Array();
showDetailText["ca"] = "Mostrar detalls";
showDetailText["es"] = "Mostrar detalles";
showDetailText["en"] = "View details";

var hideDetailText = new Array();
hideDetailText["ca"] = "Amagar detalls";
hideDetailText["es"] = "Esconder detalles";
hideDetailText["en"] = "Hide details";

var confirmDropFavObj = new Array();
confirmDropFavObj["ca"] = "Eliminar aquesta comanda de forma definitiva?";
confirmDropFavObj["es"] = "Eliminar este pedido de manera definitiva?";
confirmDropFavObj["en"] = "Delete this order permanantly?";

var confirmDropAllFavObj = new Array();
confirmDropAllFavObj["ca"] = "Eliminar TOTES les comandes favorites de forma definitiva?";
confirmDropAllFavObj["es"] = "Eliminar TODOS los pedidos favoritos de manera definitiva?";
confirmDropAllFavObj["en"] = "Delete ALL favorite orders permanantly?";


var ieVers;

if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
    ieVers = new Number(RegExp.$1);
}

//alert (ieVers);

function addEvent(elm, evType, fn, useCapture)
// cross-browser event handling for IE5+, NS6+ and Mozilla 
// By Scott Andrew 
{
  if (elm.addEventListener) { 
    elm.addEventListener(evType, fn, useCapture); 
    return true; 
  } else if (elm.attachEvent) { 
    var r = elm.attachEvent('on' + evType, fn); 
    return r; 
  } else {
    elm['on' + evType] = fn;
  }
}

function dropEvent(elm, evType, fn, useCapture)
    // cross-browser event handling for IE5+, NS6+ and Mozilla 
    // By Greg Robbins :P 
{
    if (elm.removeEventListener) { 
        elm.removeEventListener(evType, fn, useCapture); 
        return true; 
    } else if (elm.detachEvent) { 
        var r = elm.detachEvent('on' + evType, fn); 
        return r; 
    } else {
        elm['on' + evType] = null;
    }
}

// climb up the tree to the supplied tag.
function ascendDOM(e, target) {
  while (e.nodeName.toLowerCase() != target && e.nodeName.toLowerCase() != 'html')
  {
    e = e.parentNode;
    alert(e);
  }
  return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

function fetchTarget(e)
{
    if(window.event && window.event.srcElement)
    {
        return window.event.srcElement;
    }
    else if(e && e.target)
    {
        return e.target;
    }
    else
    {
        return;
    }
}
function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        curleft = obj.offsetLeft
        //alert(curleft);
        curtop = obj.offsetTop
        while (obj = obj.offsetParent) {
            //alert(obj.tagName);
            curleft += obj.offsetLeft
            //alert(obj.tagName + "(" + obj.id + "): " + obj.offsetLeft)
            curtop += obj.offsetTop
        }
    }
    return [curleft,curtop];
}

function cancelClick(e)
{
    if (window.event) {
      window.event.cancelBubble = true;
      window.event.returnValue = false;
    }
    if (e && e.stopPropagation && e.preventDefault) {
      e.stopPropagation();
      e.preventDefault();
    }
    return false;
}

function euroNumberFormat(myval)
{
    newVal = myval.toFixed(2) + "";
    newVal = newVal.replace(/\./g, ",");
    return newVal;
}


function addAllEvents()
{
    fetchCartButtons();
    fetchCartSelects();
    fetchDropButtons();
    loadClientArea();
    fetchItemSelects();
    fetchItemAltQtys();
    fetchCartAltQtys();
    //fetchTextAreas();
}

var allowPopups = false;

function fetchTextAreas()
{
    textAreasArr = document.getElementsByTagName("TEXTAREA");
    for(i = 0; i < textAreasArr.length; i++)
    {
        if(textAreasArr[i].id.match(/cartComment_([0-9]+)/) || textAreasArr[i].id.match(/user_comment/))
        {
            addEvent(textAreasArr[i], "keyup", limitTextArea, false);
        }
        
    }
}
function limitTextArea(e)
{
    maxText = 50;
    target = fetchTarget(e);
    if(target.value.length > maxText)
    {
        target.value = target.value.substring(0, maxText);
    }
    
}

function detectEvents(str)
{
    data = str.split("_");
    return data;
}

function fetchCartButtons()
{
    allButtons = document.getElementsByTagName("INPUT");
    for(i = 0; i < allButtons.length; i++)
    {
        if(allButtons[i].id.match(/addCart_([0-9]+)/))
        {
            addEvent(allButtons[i], "click", addCart, false);
            addEvent(allButtons[i], "mouseover", cartButtonRollOn, false);
            addEvent(allButtons[i], "mouseout", cartButtonRollOff, false);
            allButtons[i].onclick = cancelClick;
        }
    }
}

function cartButtonRollOn(e)
{
    target = fetchTarget(e);
    target.src = "img_std/cart_button_on.gif";
    return;
}

function cartButtonRollOff(e)
{
    target = fetchTarget(e);
    target.src = "img_std/cart_button_off.gif";
    return;
}

function fetchCartSelects()
{
    cartItemsObj = document.getElementById("cartItems");
    if(cartItemsObj)
    {
        cartSelects = cartItemsObj.getElementsByTagName("SELECT");
        for(i = 0; i < cartSelects.length; i++)
        {
            addEvent(cartSelects[i], "change", changeCartItemQty, false);
        }
    }
}

function fetchItemSelects()
{
    contentObj = document.getElementById("contentContainer");
    isCheckout = null == document.getElementById("checkoutCartContainer") ? false : true;
    if(isCheckout) return;
    if(contentObj)
    {
        itemSelects = contentObj.getElementsByTagName("SELECT");
        for(i = 0; i < itemSelects.length; i++)
        {
            addEvent(itemSelects[i], "change", selectOtherQty, false);
        }
    }
}

function fetchItemAltQtys()
{
    contentObj = document.getElementById("contentContainer");
    isCheckout = null == document.getElementById("checkoutCartContainer") ? false : true;
    if(isCheckout) return;
    if(contentObj)
    {
        itemAltQtys = contentObj.getElementsByTagName("INPUT");
        for(i = 0; i < itemAltQtys.length; i++)
        {
            if (itemAltQtys[i].className == "itemAltQty")
            {
                addEvent(itemAltQtys[i], "blur", hideAltQty, false);
                addEvent(itemAltQtys[i], "keyup", detectKeyCode, false);
            }
        }
    }
}

function fetchCartAltQtys()
{
    cartItemsObj = document.getElementById("cartItems");
    
    if(cartItemsObj)
    {
        itemAltQtys = cartItemsObj.getElementsByTagName("INPUT");
        for(i = 0; i < itemAltQtys.length; i++)
        {
            if (itemAltQtys[i].className == "itemAltQty")
            {
                addEvent(itemAltQtys[i], "keyup", detectKeyCode, false);
                addEvent(itemAltQtys[i], "keyup", submitCartAltQty, false);
                addEvent(itemAltQtys[i], "blur", hideCartAltQty, false);
            }
        }
    }
}

function detectKeyCode(e)
{
    //alert(e.keyCode);
    if(e.keyCode > 47 && e.keyCode < 58)
    {
        return;
    }
    //return false;
    target = fetchTarget(e);
    target.value = target.value.replace(/[^0-9]/, "");
}

function hideAltQty(e)
{
    target = fetchTarget(e);
    myValue = target.value;
    //alert(myValue);
    idItem = target.id.match(/itemAltQty_([0-9]+)/)[1];
    itemQtyObj = document.getElementById("itemQty_" + idItem);
    for(i = 0; i < itemQtyObj.options.length; i++)
    {
        if(myValue == itemQtyObj.options[i].value)
        {
            target.style.display = "none";
            itemQtyObj.style.display = "inline";
            itemQtyObj.selectedIndex = i;
        }
    }
}

function hideCartAltQty(e)
{
    //alert("blur");
    target = fetchTarget(e);
    myValue = target.value;
    //alert(myValue);
    idItem = target.id.match(/cartItemAltQty_([0-9]+)/)[1];
    itemQtyObj = document.getElementById("cartItemQty_" + idItem);
    //alert(itemQtyObj.id);
    for(i = 0; i < itemQtyObj.options.length; i++)
    {
        if(myValue == itemQtyObj.options[i].value)
        {
            target.style.display = "none";
            itemQtyObj.style.display = "inline";
            itemQtyObj.selectedIndex = i;
            break;
        }
    }
}

function selectOtherQty(e)
{
    target = fetchTarget(e);
    idItem = target.id.match(/itemQty_([0-9]+)/)[1];
    selectedVal = target.options[target.selectedIndex].value;
    itemAltQtyObj = document.getElementById("itemAltQty_" + idItem);
    if(selectedVal == "y")
    {
        target.style.display="none";
        itemAltQtyObj.style.display = "inline";
        itemAltQtyObj.focus();
    }
}

function addCart(e)
{
    target = fetchTarget(e);
    match = target.id.match(/addCart_([0-9]+)/);
    idItem = match[1];
    
    itemQtyObj = document.getElementById("itemQty_" + idItem);
    itemQtyVal = itemQtyObj.options[itemQtyObj.selectedIndex].value;
    
    itemAltQtyObj = document.getElementById("itemAltQty_" + idItem);
    itemAltQtyVal = itemAltQtyObj.value;
    
    if(itemQtyObj.style.display == "none")
    {
        myValue = itemAltQtyVal;
    }
    else
    {
        myValue = itemQtyVal;
    }
    
    ajaxObj.call("action=ajaxCart&myAction=addCart&idItem=" + idItem + "&qty=" + myValue, addCartResp);
    
    if(window.event)
    {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    if(e && e.stopPropagation && e.preventDefault)
    {
        e.stopPropagation();
        e.preventDefault();
    }
}

function changeCartItemQty(e)
{
    target = fetchTarget(e);
    if (target.options[target.options.selectedIndex].value == "y")
    {
        idItem = target.id.match(/cartItemQty_([0-9]+)/)[1];
        cartItemAltQtyObj = document.getElementById("cartItemAltQty_" + idItem);
        target.style.display = "none";
        cartItemAltQtyObj.style.display = "inline";
    }
    else
    {
        changeCart(e);
    }
}

function submitCartAltQty(e)
{
    target = fetchTarget(e);
    target.value = parseInt(target.value);
    if (target.value == "NaN")
    {
        target.value = "";
        return;
    }
    //window.setTimeout(function(){alert(e);}, 1000);
    if (document.all) {
        //window.setTimeout(function(){changeCart(e);}, 1000);
        elementId = target.id;
        window.setTimeout(function(){changeCart(elementId);}, 1000);
    }
    else {
        window.setTimeout(function(){changeCart(e);}, 1000, e);
    }
    //changeCart(e);
}

function changeCart(e)
{
    if("string" == typeof e)
    {
        target = document.getElementById(e);
    }
    else
    {
        target = fetchTarget(e);
    }
    
    parts = target.id.split("_");
    
    isDrop = parts[0] == "drop" ? true : false;
    myTagName = target.tagName;
    idItem = parts[1];
    
    if(!isDrop)
    {
        if (myTagName == "SELECT")
        {
            itemQtyVal = target.options[target.selectedIndex].value;
            useAction = itemQtyVal == "x" ? "dropCart" : "updateCart";
        }
        else if (myTagName == "INPUT")
        {
            itemQtyVal = target.value;
            useAction = itemQtyVal == "0" ? "dropCart" : "updateCart";
        }
    }
    else
    {
        itemQtyVal = "x";
        useAction = "dropCart";
    }
    ajaxObj.call("action=ajaxCart&myAction=" + useAction + "&idItem=" + idItem + "&qty=" + itemQtyVal, addCartResp);
    
    if(window.event)
    {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    if(e && e.stopPropagation && e.preventDefault)
    {
        e.stopPropagation();
        e.preventDefault();
    }
}



function addCartResp(resp)
{
    idItem = resp.idItem;
    qty = resp.qty;
    //alert(resp.item.amount);
    myAction = resp.myAction;
    //alert(resp);
    
    itemContainerObjId = "cartItem_" + idItem;
    
    //find item in cart
    itemContainerObj = document.getElementById(itemContainerObjId);
    
    //if found
    if(itemContainerObj)
    {
        if(qty == "x")
        {
            cartListObj = document.getElementById("cartItems");
            cartListObj.removeChild(itemContainerObj);
            
            cartListItems = cartListObj.getElementsByTagName("LI");
            //alert(cartListItems.length);
            if(cartListItems.length == 0)
            {
                cartEmpty = document.createElement("LI");
                cartEmpty.id = "emptyCart";
                cartEmpty.innerHTML = cartEmptyText[pageLang];
                cartListObj.appendChild(cartEmpty);
            }
        }
        else
        {
            //alert("Found itemContainerObj: " + itemContainerObjId);
            selectObj = document.getElementById("cartItemQty_" + idItem);
            altQtyObj = document.getElementById("cartItemAltQty_" + idItem);
            altQtyObj.value = qty;
            myFound = false;
            for(i = 0; i < selectObj.options.length; i++)
            {
                if(qty == selectObj.options[i].value)
                {
                    selectObj.selectedIndex = i;
                    myFound = true;
                    break;
                }
            }
            //which to show?
            if(myFound == true)
            {
                selectObj.style.display = "inline";
                altQtyObj.style.display = "none";
            }
            else
            {
                selectObj.style.display = "none";
                altQtyObj.style.display = "inline";
            }
            
            cartPriceObj = document.getElementById("itemPrice_" + idItem);
            if (cartPriceObj) {
                newItemAmountVal = resp.item.amount.toFixed(2) + "";
                newItemAmount = newItemAmountVal.replace(/\./g, ",") + " &euro;";
                cartPriceObj.innerHTML = newItemAmount;
            }
            //update IVA
            ivaObj = document.getElementById("itemAmountIVA_" + idItem);
            if(ivaObj)
            {
                newIvaAmountVal = resp.item.amountIVA.toFixed(2) + "";
                newIvaAmount = newIvaAmountVal.replace(/\./g, ",") + " &euro;";
                ivaObj.innerHTML = newIvaAmount;
            }
            //update Recargo
            recObj = document.getElementById("itemAmountRecargo_" + idItem);
            if(recObj)
            {
                newRecAmountVal = resp.item.amountRecargo.toFixed(2) + "";
                newRecAmount = newRecAmountVal.replace(/\./g, ",") + " &euro;";
                recObj.innerHTML = newRecAmount;
            }
            //update allIncAmount
            allIncObj = document.getElementById("itemAmountAllIncl_" + idItem);
            if(allIncObj)
            {
                newAllIncAmountVal = resp.item.amountAllIncl.toFixed(2) + "";
                newAllIncAmount = newAllIncAmountVal.replace(/\./g, ",") + " &euro;";
                allIncObj.innerHTML = newAllIncAmount;
            }
        }
    }
    else
    {
        //alert("Not found: " + itemContainerObjId);
        cartItemObj = createCartItem(resp.item);
        cartListObj = document.getElementById("cartItems");
        cartListObj.insertBefore(cartItemObj, cartListObj.firstChild);
        
        emptyCartObj = document.getElementById("emptyCart");
        if(emptyCartObj)
        {
            cartListObj.removeChild(emptyCartObj);
        }
    }
    
    cartTotalAmountObj = document.getElementById("cartTotalAmount");
    cartTotalAmountCheckoutObj = document.getElementById("cartTotalAmountCheckout");
    
    //alert(resp.cartTotal);
    cartTotalVal = resp.cartTotal.toFixed(2) + "";
    cartTotalAmountObj.innerHTML = cartTotalVal.replace(/\./g, ",");
    
    //use this on checkout
    cartTotalTaxObj = document.getElementById("totalAmountIVA");
    cartTotalAmountAllInclObj = document.getElementById("totalAmountAllIncl");
    
    if(cartTotalTaxObj && cartTotalAmountAllInclObj)
    {
        cartTotalTaxVal = resp.cartTotalTax.toFixed(2) + "";
        cartTotalTaxObj.innerHTML = cartTotalTaxVal.replace(/\./g, ",");
        cartTotalAmountAllInclVal = resp.cartTotalAllIncl.toFixed(2) + "";
        cartTotalAmountAllInclObj.innerHTML = cartTotalAmountAllInclVal.replace(/\./g, ",");
    }
    
    
    /*
    if (myAction == "addCart") {
        cartButtonObj = document.getElementById("addCart_" + idItem);
        if(cartButtonObj)
        {
            createCartCommentPopup(cartButtonObj);
        }
    }
    */
}

function createCartItem(itemObj)
{
    //alert(typeof itemObj.amount);
    
    cartItemObj = document.createElement('LI');
    cartItemObj.className = 'cartItem';
    cartItemObj.id = "cartItem_" + itemObj.id;
    //title of item
    escTitle = unescape(itemObj.title);
    itemTitle = document.createTextNode(escTitle);
    cartItemObj.appendChild(itemTitle);
    cartItemObj.appendChild(document.createElement('BR'));
    //price
    cartPriceObj = document.createElement("DIV");
    cartPriceObj.className = "price";
    cartPriceObj.id = "itemPrice_" + itemObj.id;
    cartPriceVal = itemObj.amount.toFixed(2) + "";
    cartPriceObj.innerHTML = cartPriceVal.replace(/\./g, ",");
    cartPriceObj.innerHTML += " &euro;";
    cartItemObj.appendChild(cartPriceObj);
    //delete button
    dropObj = document.createElement("IMG");
    dropObj.setAttribute('id', "drop_" + itemObj.id);
    dropObj.setAttribute('name', "drop_" + itemObj.id);
    dropObj.setAttribute('class', "drop");
    dropObj.setAttribute('style', "float:left;");
    dropObj.setAttribute('src', "img_std/drop_off.gif");
    addEvent(dropObj, "click", changeCart, false);
    addEvent(dropObj, "mouseover", cartDropOn, false);
    addEvent(dropObj, "mouseout", cartDropOff, false);
    cartItemObj.appendChild(dropObj);

    //select menu
    selectObj = document.createElement('SELECT');
    selectObj.setAttribute('id', "cartItemQty_" + itemObj.id);
    selectObj.setAttribute('name', "cartItemQty_" + itemObj.id);
    for(sProp in itemObj.menu)
    {
        newOption = createCartItemOption(itemObj.qty, sProp, itemObj.menu[sProp]);
        selectObj.appendChild(newOption);
    }
    addEvent(selectObj, "change", changeCartItemQty, false);
    
    //altQty Menu
    altQtyObj = document.createElement("INPUT");
    altQtyObj.setAttribute('id', "cartItemAltQty_" + itemObj.id);
    altQtyObj.setAttribute('name', "cartItemAltQty_" + itemObj.id);
    altQtyObj.value = itemObj.qty;
    altQtyObj.className = "itemAltQty";
    addEvent(altQtyObj, "keyup", detectKeyCode, false);
    addEvent(altQtyObj, "keyup", submitCartAltQty, false);
    addEvent(altQtyObj, "blur", hideCartAltQty, false);
    
    
    //show which?
    myFound = false;
    for(sProp in itemObj.menu)
    {
        //alert(sProp)
        if(sProp == itemObj.qty)
        {
            myFound = true;
            break;
        }
    }
    if(myFound)
    {
        selectObj.style.display = "inline";
        altQtyObj.style.display = "none";
    }
    else
    {
        selectObj.style.display = "none";
        altQtyObj.style.display = "inline";
    }
    
    cartItemObj.appendChild(selectObj);
    cartItemObj.appendChild(altQtyObj);
    
    return cartItemObj;
}

function createCartItemOption(qty, key, val)
{
    optionObj = document.createElement('OPTION');
    optionObj.setAttribute('label', val);
    optionObj.setAttribute('value', key);
    optionObj.innerHTML = val;
    if(qty == key)
    {
        optionObj.selected = true;
    }
    
    return optionObj;
}


function alertClick(e)
{
    target = fetchTarget(e);
    alert(target.id);
}

function clientLogout()
{
    ajaxObj.call("action=ajaxCustomerLogin&myAction=logout&lang=" + pageLang, clientLoginResp);
}



function loadConstantDivs()
{
    allTds = document.getElementsByTagName("TD");
    for(i = 0; i < allTds.length; i++)
    {
        myTd = allTds[i];
        match = myTd.id.match(/const_(ca|es|en)_([0-9]+)/)
        if(match)
        {
            myTd.lang = match[1];
            myTd.constId = match[2];
        }
    }
}

function loadConstantControls()
{
    allButtons = document.getElementsByTagName("A");
    for(i = 0; i < allButtons.length; i++)
    {
        myButton = allButtons[i];
        match = myButton.id.match(/control_([0-9]+)/)
        if(match)
        {
            myButton.constId = match[1];
            addEvent(myButton, "click", editConst, false);
        }
    }
}

function editConst(e)
{
    target = fetchTarget(e);
    
    caConstId = "const_ca_" + target.constId;
    constObj = document.getElementById(caConstId);
    
    dropEvent(constObj, "click", editConst, false);
    constVal = constObj.innerHTML;
    textAreaObj = document.createElement("Textarea");
    textAreaObj.innerHTML = unescape(constVal);
    textAreaObj.className = "constEditTextArea";
    textAreaObj.id = "editConst_ca_" + constObj.constId;
    constObj.innerHTML = null;
    constObj.appendChild(textAreaObj);
    
    esConstId = "const_es_" + target.constId;
    constObj = document.getElementById(esConstId);
    
    dropEvent(constObj, "click", editConst, false);
    constVal = constObj.innerHTML;
    textAreaObj = document.createElement("Textarea");
    textAreaObj.innerHTML = unescape(constVal);
    textAreaObj.className = "constEditTextArea";
    textAreaObj.id = "editConst_es_" + constObj.constId;
    constObj.innerHTML = null;
    constObj.appendChild(textAreaObj);
    
    enConstId = "const_en_" + target.constId;
    constObj = document.getElementById(enConstId);
    
    dropEvent(constObj, "click", editConst, false);
    constVal = constObj.innerHTML;
    textAreaObj = document.createElement("Textarea");
    textAreaObj.innerHTML = unescape(constVal);
    textAreaObj.className = "constEditTextArea";
    textAreaObj.id = "editConst_en_" + constObj.constId;
    constObj.innerHTML = null;
    constObj.appendChild(textAreaObj);
    
    target.innerHTML = "Guardar";
    dropEvent(target, "click", editConst, false);
    addEvent(target, "click", saveConst, false);
}

function saveConst(e)
{
    target = fetchTarget(e);
    
    caEditConstObj = document.getElementById("editConst_ca_" + target.constId);
    caConstVal = caEditConstObj.value;
    esEditConstObj = document.getElementById("editConst_es_" + target.constId);
    esConstVal = esEditConstObj.value;
    enEditConstObj = document.getElementById("editConst_en_" + target.constId);
    enConstVal = enEditConstObj.value;
    
    ajaxObj.call("action=ajaxUpdateConst&id=" + target.constId + "&es=" + escape(esConstVal) + "&ca=" + escape(caConstVal) + "&en=" + escape(enConstVal), updateConstResp);
}

function updateConstResp(resp)
{
    if(resp["result"] != true) return;
    id = resp["id"];
    
    caTd = document.getElementById("const_ca_" + id);
    caEditConstObj = document.getElementById("editConst_ca_" + id);
    caConstVal = caEditConstObj.value;
    caTd.removeChild(caEditConstObj);
    caTd.innerHTML = caConstVal;
    
    esTd = document.getElementById("const_es_" + id);
    esEditConstObj = document.getElementById("editConst_es_" + id);
    esConstVal = esEditConstObj.value;
    esTd.removeChild(esEditConstObj);
    esTd.innerHTML = esConstVal;
    
    enTd = document.getElementById("const_en_" + id);
    enEditConstObj = document.getElementById("editConst_en_" + id);
    enConstVal = enEditConstObj.value;
    enTd.removeChild(enEditConstObj);
    enTd.innerHTML = enConstVal;
    
    controlObj = document.getElementById("control_" + id);
    controlObj.innerHTML = "Editar";
    dropEvent(controlObj, "click", saveConst, false);
    addEvent(controlObj, "click", editConst, false);
}


function fetchLoginActivate()
{
    loginActivateObj = document.getElementById("loginActivate");
    loginDeactivateObj = document.getElementById("loginDeactivate");
    
    if(!loginActivateObj) return;
    addEvent(loginActivateObj, "click", loginActivateSwitch, false);
    if(!loginDeactivateObj) return;
    addEvent(loginDeactivateObj, "click", loginActivateSwitch, false);
}

function loginActivateSwitch()
{
    loginOnObj = document.getElementById("loginOn");
    loginOffObj = document.getElementById("loginOff");
    
    //alert(loginOffObj.style.display);
    
    if(loginOffObj.style.display == "block")
    {
        loginOffObj.style.display = "none";
        loginOnObj.style.display = "block";
    }
    else
    {
        loginOffObj.style.display = "block";
        loginOnObj.style.display = "none";
    }
}



function fetchDropButtons()
{
    cartItemsObj = document.getElementById("cartItems");
    if(cartItemsObj)
    {
        cartDrops = cartItemsObj.getElementsByTagName("IMG");
        for(i = 0; i < cartDrops.length; i++)
        {
            if(!cartDrops[i].id.match(/^drop_/)) continue;
            addEvent(cartDrops[i], "mouseover", cartDropOn, false);
            addEvent(cartDrops[i], "mouseout", cartDropOff, false);
            addEvent(cartDrops[i], "click", changeCart, false);
        }
    }
}

function cartDropOn(e)
{
    target = fetchTarget(e);
    target.src = "img_std/drop_on.gif";
}

function cartDropOff(e)
{
    target = fetchTarget(e);
    target.src = "img_std/drop_off.gif";
}

function noShowPopups()
{
    allowPopups = false;
}

function createCartCommentPopup(buttonObj)
{
    if (allowPopups == false) return;
    
    popupObj = document.createElement("div");
    popupObj.className = "cartCommentPopup";
    buttonPos = findPos(buttonObj);
    idItem = buttonObj.id.match(/addCart_([0-9]+)/)[1];
    popupObj.id = "cartCommentPopup_" + idItem;
    
    popupObjContainer = document.createElement("div");
    popupObjContainer.className = "cartCommentPopupContainer";
    popupObj.appendChild(popupObjContainer);
    
    closeButton = document.createElement("img");
    closeButton.src = "img_std/drop_off.gif";
    closeButton.id = "cartCommentPopupClose_" + idItem;
    closeButton.className = "closeButton";
    addEvent(closeButton, "click", closeCartCommentPopup, false);
    addEvent(closeButton, "mouseover", cartDropOn, false);
    addEvent(closeButton, "mouseout", cartDropOff, false);
    popupObj.appendChild(closeButton);
    
    popupTitleObj = document.createElement("h3");
    popupTitleObj.innerHTML = popupTitleText[pageLang];
    popupObjContainer.appendChild(popupTitleObj);
    
    popupDescObj = document.createElement("p");
    popupDescObj.innerHTML = popupDescText[pageLang];
    popupObjContainer.appendChild(popupDescObj);
    
    popupCommentBox = document.createElement("textarea");
    popupCommentBox.id = "comment_" + idItem;
    popupObjContainer.appendChild(popupCommentBox);
    
    popupSaveButton = document.createElement("a");
    popupSaveButton.href = "#";
    addEvent(popupSaveButton, "click", cancelClick, false);
    popupSaveButton.className = "sendButton";
    popupSaveButton.innerHTML = "OK";
    popupSaveButton.id = "commentSave_" + idItem;
    addEvent(popupSaveButton, "click", savePopupComment, false);
    popupObjContainer.appendChild(popupSaveButton);
    
    popupFooterObj = document.createElement("p");
    popupFooterObj.className = "footer";
    
    popupCloseObj = document.createElement("a");
    popupCloseObj.href = "#";
    addEvent(popupCloseObj, "click", cancelClick, false);
    popupCloseObj.innerHTML = popupCloseText[pageLang];
    popupCloseObj.id = "link_cartCommentPopupClose_" + idItem;
    addEvent(popupCloseObj, "click", closeCartCommentPopup, false);
    
    popupFooterObj.appendChild(popupCloseObj);
    
    //brObj = document.createElement("br");
    brObj = document.createTextNode(" | ");
    popupFooterObj.appendChild(brObj);
    
    popupNoShowObj = document.createElement("a");
    popupNoShowObj.href = "#";
    addEvent(popupNoShowObj, "click", cancelClick, false);
    popupNoShowObj.innerHTML = popupNoShowText[pageLang];
    popupNoShowObj.id = "noshow_cartCommentPopupClose_" + idItem;
    addEvent(popupNoShowObj, "click", closeCartCommentPopup, false);
    addEvent(popupNoShowObj, "click", noShowPopups, false);
    popupFooterObj.appendChild(popupNoShowObj);
    
    popupObjContainer.appendChild(popupFooterObj);
    
    
    if(ieVers >= 7)
    {
        popupObj.style.left = (buttonPos[0]- 218) + "px";
    }
    else
    {
        popupObj.style.left = buttonPos[0] + "px";
    }
    
    popupObj.style.left = (buttonPos[0] + 20) + "px";
    
    popupObj.style.top = (buttonPos[1]) + "px";
    document.body.appendChild(popupObj);
    popupObj.style.zIndex = 10;
    
    popupCommentBox.focus();
}


function savePopupComment(e)
{
    target = fetchTarget(e);
    //alert(target.id);
    idItem = target.id.match(/commentSave_([0-9]+)/)[1];
    commentObj = document.getElementById("comment_" + idItem);
    commentText = escape(commentObj.value);
    //commentText = commentObj.value;
    //alert(commentText);
    ajaxObj.call("action=ajaxCartComment&idItem=" + idItem + "&comment=" + commentText, savePopupCommentResp);
    
    popupObj = document.getElementById("cartCommentPopup_" + idItem);
    document.body.removeChild(popupObj);
}

function savePopupCommentResp(resp)
{
    
}

function closeCartCommentPopup(e)
{
    target = fetchTarget(e);
    idItem = target.id.match(/cartCommentPopupClose_([0-9]+)/)[1];
    popupObj = document.getElementById("cartCommentPopup_" + idItem);
    document.body.removeChild(popupObj);
}

function setupCheckoutComments()
{
    taArr = document.getElementsByTagName("textarea");
    for(i = 0; i < taArr.length; i++)
    {
        if(taArr[i].id.match(/cartComment_([0-9]+)/))
        {
            addEvent(taArr[i], "change", updateCartComment, false);
        }
    }
}

function updateCartComment(e)
{
    target = fetchTarget(e);
    idItem = target.id.match(/cartComment_([0-9]+)/)[1];
    commentText = escape(target.value);
    ajaxObj.call("action=ajaxCartComment&idItem=" + idItem + "&comment=" + commentText, savePopupCommentResp);
}


function loadClientArea()
{
    loadForgotPwd();
    loadClientLoginButton();
    loadOrderDetailsButtons();
    loadFavOrderDetailButtons();
    loadRecoverFavOrderButtons();
    loadCreateFavOrderFromCart();
    loadDropFavOrderButtons();
    loadFavOrderChangeButtons();
}

function loadForgotPwd()
{
    forgotPwdLinkObj = document.getElementById("forgotPasswordLink");
    if(!forgotPwdLinkObj) return;
    addEvent(forgotPwdLinkObj, "click", openForgotPwd, false);
}

function openForgotPwd(e)
{
    ajaxObj.call("action=ajaxOpenForgotPwd&lang=" + pageLang, openForgotPwdResp);
}

function openForgotPwdResp(resp)
{
    forgotPwdObj = document.getElementById("forgot_pwd");
    forgotPwdObj.innerHTML = resp;
    recover_pwd_buttonObj = document.getElementById("recover_pwd_button");
    addEvent(recover_pwd_buttonObj, "click", recoverPwd, false);
    
    forgotPwdLinkObj = document.getElementById("forgotPasswordLink");
    dropEvent(forgotPwdLinkObj, "click", openForgotPwd, false);
}

function recoverPwd(e)
{
    recover_emailObj = document.getElementById("recover_email");
    emailVal = recover_emailObj.value;
    ajaxObj.call("action=ajaxRecoverPwd&email=" + escape(emailVal) + "&lang=" + pageLang, recoverPwdResp);
}

function recoverPwdResp(resp)
{
    if(resp["success"] == 0)
    {
        recoverPwdErrObj = document.getElementById("recoverPwdErr");
        recoverPwdErrObj.innerHTML = resp["errMsg"];
    }
    else
    {
        forgotPwdObj = document.getElementById("forgot_pwd");
        forgotPwdObj.innerHTML = resp["successMsg"];
        forgotPwdLinkObj = document.getElementById("forgotPasswordLink");
        if(!forgotPwdLinkObj) return;
        addEvent(forgotPwdLinkObj, "click", openForgotPwd, false);
    }
}


function loadClientLoginButton()
{
    clientLoginButtonObj = document.getElementById("clientLoginButton");
    if(!clientLoginButtonObj) return;
    addEvent(clientLoginButtonObj, "click", clientAreaLogin, false);
}

function clientAreaLogin()
{
    emailObj = document.getElementById("email");
    passwdObj = document.getElementById("passwd");
    email = emailObj.value;
    passwd = passwdObj.value;
    ajaxObj.call("action=ajaxClientAreaLogin&email=" + email + "&passwd=" + passwd + "&lang=" + pageLang, clientAreaLoginResp);
}

function clientAreaLoginResp(resp)
{
    if(resp["success"] == 0)
    {
        loginErrorObj = document.getElementById("loginError");
        loginErrorObj.innerHTML = resp["loginErr"];
    }
    else
    {
        client_area_containerObj = document.getElementById("client_area_container");
        client_area_containerObj.innerHTML = resp["pageContent"];
        loadOrderDetailsButtons();
    }
}

function loadOrderDetailsButtons()
{
    anchorsArr = document.getElementsByTagName("a");
    for(i = 0; i < anchorsArr.length; i++)
    {
        if(anchorsArr[i].id.match(/orderDetail_([0-9]+)/))
        {
            addEvent(anchorsArr[i], "click", loadOrderDetails, false);
        }
        if(anchorsArr[i].id.match(/recoverOrder_([0-9]+)/))
        {
            addEvent(anchorsArr[i], "click", recoverOrder, false);
        }
    }
}

function loadOrderDetails(e)
{
    target = fetchTarget(e);
    idOrder = target.id.match(/orderDetail_([0-9]+)/)[1];
    //alert(idOrder);
    ajaxObj.call("action=ajaxLoadOrderDetails&idOrder=" + idOrder + "&lang=" + pageLang, loadOrderDetailsResp);
}

function loadOrderDetailsRespX(resp)
{
    orderDivObj = document.getElementById("orderDiv_" + resp["idOrder"]);
    orderItemListObj = document.createElement("ul");
    orderItemListObj.id = "orderItemList_" + resp["idOrder"];
    items = resp["items"];
    for(i = 0; i < items.length; i++)
    {
        itemsLiObj = document.createElement("li");
        itemsLiObj.innerHTML = items[i]["title"] + ": " + items[i]["quantity"];
        orderItemListObj.appendChild(itemsLiObj);
    }
    orderDivObj.appendChild(orderItemListObj);
    
    orderControlText = document.getElementById("orderDetail_" + resp["idOrder"]);
    orderControlText.revertText = orderControlText.innerHTML;
    orderControlText.innerHTML = resp["closeText"];
    
    dropEvent(orderControlText, "click", loadOrderDetails, false);
    addEvent(orderControlText, "click", closeOrderDetails, false);
}

function loadOrderDetailsResp(resp)
{
    //create table
    tableObj = document.createElement("table");
    tableObj.className = "favOrder";
    tableObj.id = "orderDetailTable_" + resp["idOrder"];
    tableObj.setAttribute("cellSpacing", 0);
    tableObj.setAttribute("cellPadding", 0);
    tableObj.setAttribute("border", 0);
    
    tBodyObj = document.createElement("tbody");
    //create header row
    trObjHd = document.createElement("tr");
    //create header cells
    thObj_1 = document.createElement("th");
    thObj_1.innerHTML = itemLabelText[pageLang];
    trObjHd.appendChild(thObj_1);
    
    thObj_2 = document.createElement("th");
    thObj_2.innerHTML = itemQtyText[pageLang];
    trObjHd.appendChild(thObj_2);
    
    thObj_3 = document.createElement("th");
    thObj_3.innerHTML = itemBaseText[pageLang];
    trObjHd.appendChild(thObj_3);
    
    thObj_4 = document.createElement("th");
    thObj_4.innerHTML = itemIVAText[pageLang];
    trObjHd.appendChild(thObj_4);
    
    thObj_5 = document.createElement("th");
    thObj_5.innerHTML = itemTotalText[pageLang];
    trObjHd.appendChild(thObj_5);
    
    tBodyObj.appendChild(trObjHd);
    
    
    //loop thru items
    for(i = 0; i < resp["items"].length; i++)
    {
        myItem = resp["items"][i];
        //create image
        imgObj = document.createElement("img");
        imgObj.src = "img_xs/" + myItem["image"];
        //create link to item
        if (myItem["is_visible"] == 0) {
            itemLink = document.createElement("strong");
            itemLink.innerHTML = myItem["title"] + "<br />" + itemNDText[pageLang];
        }
        else {
            itemLink = document.createElement("a");
            itemLink.href = "a/" + myItem["label"] + ".html";
            itemLink.innerHTML = myItem["title"];
        }
        //create price
        itemPrice = document.createElement("span");
        priceVal = myItem["price"];
        itemPrice.innerHTML = priceVal + " &euro; " + itemEachText[pageLang];
        
        //get current price
        if(myItem["price"] != myItem["currentPrice"] && myItem["is_visible"] == 1)
        {
            itemPrice.innerHTML += "<br /><em>" + itemCurrPriceText[pageLang] + ": " + myItem["currentPrice"] + " &euro; " + itemEachText[pageLang] + "</em>";
        }
        
        //create row
        trObj = document.createElement("tr");
        //style row
        trObj.className = i%2 ? "lt" : "dk";
        if(myItem["is_visible"] == 0)
        {
            trObj.className += " invis";
        }
        //create 1st cell
        tdObj_1 = document.createElement("td");
        tdObj_1.appendChild(imgObj);
        tdObj_1.appendChild(itemLink);
        tdObj_1.appendChild(itemPrice);
        trObj.appendChild(tdObj_1);
        //create 2nd cell
        tdObj_2 = document.createElement("td");
        tdObj_2.innerHTML = myItem["qty"];
        trObj.appendChild(tdObj_2);
        //create 3rd cell
        tdObj_3 = document.createElement("td");
        tdObj_3.innerHTML = myItem["totalItemAmount"];
        trObj.appendChild(tdObj_3);
        //create 4th cell
        tdObj_4 = document.createElement("td");
        ivaValue = parseFloat(myItem["amtIVA"]) + parseFloat(myItem["amtRecargo"]);
        tdObj_4.innerHTML = ivaValue.toFixed(2) + "&nbsp;&euro;";
        trObj.appendChild(tdObj_4);
        //create 5th cell
        tdObj_5 = document.createElement("td");
        tdObj_5.innerHTML = myItem["totalAllIncl"] + "&nbsp;&euro;";
        trObj.appendChild(tdObj_5);
        //append Row
        tBodyObj.appendChild(trObj);
    }
    
    
    tableObj.appendChild(tBodyObj);
    
    //get place to load table
    containerObj = document.getElementById("orderDiv_" + resp["idOrder"]);
    containerObj.appendChild(tableObj);
    
    //change button behavior
    detailsButton = document.getElementById("orderDetail_" + resp["idOrder"]);
    dropEvent(detailsButton, "click", loadOrderDetails, false);
    addEvent(detailsButton, "click", closeOrderDetails, false);
    detailsButton.innerHTML = hideDetailText[pageLang];
}

function closeOrderDetails(e)
{
    /*
    target = fetchTarget(e);
    idOrder = target.id.match(/orderDetail_([0-9]+)/)[1];
    dropEvent(orderControlText, "click", closeOrderDetails, false);
    addEvent(orderControlText, "click", loadOrderDetails, false);
    orderItemListObj = document.getElementById("orderItemList_" + idOrder);
    orderItemListObj.parentNode.removeChild(orderItemListObj);
    target.innerHTML = target.revertText;
    */
    
    target = fetchTarget(e);
    idFavOrder = target.id.match(/orderDetail_([0-9]+)/)[1];
    tableObj = document.getElementById("orderDetailTable_" + idFavOrder);
    tableObj.parentNode.removeChild(tableObj);
    //change button behavior
    detailsButton = document.getElementById("orderDetail_" + idFavOrder);
    dropEvent(detailsButton, "click", closeOrderDetails, false);
    addEvent(detailsButton, "click", loadOrderDetails, false);
    detailsButton.innerHTML = showDetailText[pageLang];
}

function recoverOrder(e)
{
    target = fetchTarget(e);
    idOrder = target.id.match(/recoverOrder_([0-9]+)/)[1];
    ajaxObj.call("action=ajaxRecoverOrder&idOrder=" + idOrder + "&lang=" + pageLang, recoverOrderResp);
}

function recoverOrderResp(resp)
{
    cartContentObj = document.getElementById("cartContent");
    cartContentObj.innerHTML = resp["cartContent"];
    
    cartTotalObj = document.getElementById("cartTotalAmount");
    cartTotalObj.innerHTML = resp["cartTotal"];
    
    fetchCartSelects();
    fetchDropButtons();
}

function loadFavOrderDetailButtons()
{
    anchorArr = document.getElementsByTagName("A");
    for(i = 0; i < anchorArr.length; i++)
    {
        if(anchorArr[i].id.match(/favOrderDetail_([0-9]+)/))
        {
            addEvent(anchorArr[i], "click", loadFavOrderDetail, false);
        }
    }
}

function loadFavOrderDetail(e)
{
    target = fetchTarget(e);
    idFavOrder = target.id.match(/favOrderDetail_([0-9]+)/)[1];
    ajaxObj.call("action=ajaxLoadFavOrderDetails&idFavOrder=" + idFavOrder + "&lang=" + pageLang + "&custType=" + custType, loadFavOrderDetailResp);
}

function loadFavOrderDetailResp(resp)
{
    //create table
    tableObj = document.createElement("table");
    tableObj.className = "favOrder";
    tableObj.id = "favOrderDetailTable_" + resp["favOrder"]["id"];
    tableObj.setAttribute("cellSpacing", 0);
    tableObj.setAttribute("cellPadding", 0);
    tableObj.setAttribute("border", 0);
    
    tBodyObj = document.createElement("tbody");
    //create header row
    trObjHd = document.createElement("tr");
    //create header cells
    thObj_1 = document.createElement("th");
    thObj_1.innerHTML = itemLabelText[pageLang];
    trObjHd.appendChild(thObj_1);
    
    thObj_2 = document.createElement("th");
    thObj_2.innerHTML = itemQtyText[pageLang];
    trObjHd.appendChild(thObj_2);
    
    thObj_3 = document.createElement("th");
    thObj_3.innerHTML = itemTotalText[pageLang];
    trObjHd.appendChild(thObj_3);
    
    tBodyObj.appendChild(trObjHd);
    
    //loop thru items
    for(i = 0; i < resp["favOrder"]["items"].length; i++)
    {
        myItem = resp["favOrder"]["items"][i];
        //create image
        imgObj = document.createElement("img");
        imgObj.src = "img_xs/" + myItem["image"];
        //create link to item
        if (myItem["is_visible"] == 0) {
            itemLink = document.createElement("strong");
            itemLink.innerHTML = myItem["title"] + "<br />" + itemNDText[pageLang];
        }
        else {
            itemLink = document.createElement("a");
            itemLink.href = "a/" + myItem["label"] + ".html";
            itemLink.innerHTML = myItem["title"];
        }
        //create price
        itemPrice = document.createElement("span");
        priceVal = myItem["price"];
        itemPrice.innerHTML = priceVal + " &euro;";
        
        //create row
        trObj = document.createElement("tr");
        //style row
        trObj.className = i%2 ? "lt" : "dk";
        if(myItem["is_visible"] == 0)
        {
            trObj.className += " invis";
        }
        //create 1st cell
        tdObj_1 = document.createElement("td");
        tdObj_1.appendChild(imgObj);
        tdObj_1.appendChild(itemLink);
        tdObj_1.appendChild(itemPrice);
        trObj.appendChild(tdObj_1);
        //create 2nd cell
        tdObj_2 = document.createElement("td");
        tdObj_2.innerHTML = myItem["qty"];
        trObj.appendChild(tdObj_2);
        //create 3rd cell
        tdObj_3 = document.createElement("td");
        tdObj_3.innerHTML = myItem["totalItemAmount"] + " &euro;";
        trObj.appendChild(tdObj_3);
        //append Row
        tBodyObj.appendChild(trObj);
    }
    tableObj.appendChild(tBodyObj);
    
    //get place to load table
    containerObj = document.getElementById("favDiv_" + resp["favOrder"]["id"]);
    containerObj.appendChild(tableObj);
    
    //change button behavior
    detailsButton = document.getElementById("favOrderDetail_" + resp["favOrder"]["id"]);
    dropEvent(detailsButton, "click", loadFavOrderDetail, false);
    addEvent(detailsButton, "click", hideFavOrderDetail, false);
    detailsButton.innerHTML = hideDetailText[pageLang];
}

function hideFavOrderDetail(e)
{
    target = fetchTarget(e);
    idFavOrder = target.id.match(/favOrderDetail_([0-9]+)/)[1];
    tableObj = document.getElementById("favOrderDetailTable_" + idFavOrder);
    tableObj.parentNode.removeChild(tableObj);
    //change button behavior
    detailsButton = document.getElementById("favOrderDetail_" + idFavOrder);
    dropEvent(detailsButton, "click", hideFavOrderDetail, false);
    addEvent(detailsButton, "click", loadFavOrderDetail, false);
    detailsButton.innerHTML = showDetailText[pageLang];
}


function loadRecoverFavOrderButtons()
{
    anchorArr = document.getElementsByTagName("a");
    for(i = 0; i < anchorArr.length; i++)
    {
        if(anchorArr[i].id.match(/recoverFavOrder_([0-9]+)/))
        {
            addEvent(anchorArr[i], "click", recoverFavOrder, false);
        }
    }
}

function recoverFavOrder(e)
{
    target = fetchTarget(e);
    idFavOrder = target.id.match(/recoverFavOrder_([0-9]+)/)[1];
    ajaxObj.call("action=ajaxRecoverFavOrder&idFavOrder=" + idFavOrder + "&lang=" + pageLang, recoverOrderResp);    
}


function loadCreateFavOrderFromCart()
{
    linkObj = document.getElementById("createFavOrderFromCart");
    if(!linkObj) return;
    addEvent(linkObj, "click", createFavOrderFromCart, false);
}

function createFavOrderFromCart(e)
{
    data = ajaxObj.call("action=ajaxCreateFavOrderFromCart&lang=" + pageLang, createFavOrderFromCartResp);
    return data;
}

function createFavOrderFromCartResp(resp)
{
    if(!resp) return;
    
    idFavOrder = resp["favOrder"]["id"];
    htmlContent = resp["html"];
    favDiv = document.createElement("div");
    favDiv.id = "favDiv_" + idFavOrder;
    favDiv.className = "favDiv";
    favDiv.innerHTML = htmlContent;
    
    containerObj = document.getElementById("favOrdersContainer");
    divArr = containerObj.getElementsByTagName("div");
    existingFavObj = false;
    for(i = 0; i < divArr.length; i++)
    {
        if(divArr[i].id.match(/favDiv_([0-9])+/))
        {
            existingFavObj = divArr[i];
            break;
        }
    }
    if(existingFavObj)
    {
        containerObj.insertBefore(favDiv, existingFavObj);
    }
    else
    {
        containerObj.appendChild(favDiv);
    }
    //setup buttons
    dropButton = document.getElementById("dropFavOrder_" + idFavOrder);
    addEvent(dropButton, "click", dropFavOrder, false);
    detailButton = document.getElementById("favOrderDetail_" + idFavOrder);
    addEvent(detailButton, "click", loadFavOrderDetail, false);
    editButton = document.getElementById("favOrderEditTitle_" + idFavOrder);
    addEvent(editButton, "click", changeFavOrder, false);
    saveButton = document.getElementById("favOrderSaveTitle_" + idFavOrder);
    addEvent(saveButton, "click", saveFavOrder, false);
    
    inputObj = document.getElementById("favOrderInput_" + idFavOrder);
    inputObj.focus();
    var event = document.createEvent("HTMLEvents");
    event.initEvent("click", true, true);
    document.getElementById("favOrderDetail_" + idFavOrder).dispatchEvent(event);
    checkNoFavOrders();
}

function loadDropFavOrderButtons()
{
    anchorArr = document.getElementsByTagName("a");
    for(i = 0; i < anchorArr.length; i++)
    {
        if(anchorArr[i].id.match(/dropFavOrder_([0-9]+)/))
        {
            addEvent(anchorArr[i], "click", dropFavOrder, false);
        }
    }
    dropAllElm = document.getElementById('dropAllFavOrders');
    if (dropAllElm != null) {
        addEvent(dropAllElm, 'click', dropAllFavOrders, false);
    }
}

function dropAllFavOrders(e) {
    if (confirm(confirmDropAllFavObj[pageLang])) {
        massFavDeleteFlag = true;
        $('a[id^="dropFavOrder_"]').each(function(i){
            delId = this.id;
            var event = document.createEvent("HTMLEvents");
            event.initEvent("click", true, true);
            document.getElementById(delId).dispatchEvent(event);
        });
        massFavDeleteFlag = false;
    }
}

function dropFavOrder(e){
    target = fetchTarget(e);
    idFavOrder = target.id.match(/dropFavOrder_([0-9]+)/)[1];
    if (massFavDeleteFlag == true) {
        ajaxObj.call("action=ajaxDropFavOrder&idFavOrder=" + idFavOrder, dropFavOrderResp);
    }
    else if (confirm(confirmDropFavObj[pageLang])) {
        ajaxObj.call("action=ajaxDropFavOrder&idFavOrder=" + idFavOrder, dropFavOrderResp);
    }
}

function dropFavOrderResp(resp)
{
    divObj = document.getElementById("favDiv_" + resp);
    divObj.parentNode.removeChild(divObj);
    checkNoFavOrders();
}


function loadFavOrderChangeButtons()
{
    anchorArr = document.getElementsByTagName("a");
    for(i = 0; i < anchorArr.length; i++)
    {
        if(anchorArr[i].id.match(/favOrderEditTitle_([0-9]+)/))
        {
            addEvent(anchorArr[i], "click", changeFavOrder, false);
        }
        if(anchorArr[i].id.match(/favOrderSaveTitle_([0-9]+)/))
        {
            addEvent(anchorArr[i], "click", saveFavOrder, false);
        }
    }
}

function changeFavOrder(e)
{
    target = fetchTarget(e);
    idFavOrder = target.id.match(/favOrderEditTitle_([0-9]+)/)[1];
    //get objects
    titleObj = document.getElementById("favOrderTitle_" + idFavOrder);
    inputObj = document.getElementById("favOrderInput_" + idFavOrder);
    editButtonObj = document.getElementById("favOrderEditTitle_" + idFavOrder);
    saveButtonObj = document.getElementById("favOrderSaveTitle_" + idFavOrder);
    
    titleObj.style.display = "none";
    inputObj.style.display = "inline";
    editButtonObj.style.display = "none";
    saveButtonObj.style.display = "inline";
    
    inputObj.focus();
}

function saveFavOrder(e)
{
    target = fetchTarget(e);
    idFavOrder = target.id.match(/favOrderSaveTitle_([0-9]+)/)[1];
    inputObj = document.getElementById("favOrderInput_" + idFavOrder);
    ajaxObj.call("action=ajaxUpdateFavOrder&idFavOrder=" + idFavOrder + "&title=" + inputObj.value + "&lang=" + pageLang + "&custType=" + custType, saveFavOrderResp);
}

function saveFavOrderResp(resp)
{
    idFavOrder = resp;
    //get objects
    titleObj = document.getElementById("favOrderTitle_" + idFavOrder);
    inputObj = document.getElementById("favOrderInput_" + idFavOrder);
    editButtonObj = document.getElementById("favOrderEditTitle_" + idFavOrder);
    saveButtonObj = document.getElementById("favOrderSaveTitle_" + idFavOrder);
    
    titleObj.innerHTML = inputObj.value;
    
    titleObj.style.display = "inline";
    inputObj.style.display = "none";
    editButtonObj.style.display = "inline";
    saveButtonObj.style.display = "none";
}

function checkNoFavOrders()
{
    favOrdersEmptyObj = document.getElementById("favOrdersEmpty");
    dropAllFavOrdersContainerObj = document.getElementById("dropAllFavOrdersContainer");
    
    divArr = document.getElementsByTagName("div");
    divCount = 0;
    for(i = 0; i < divArr.length; i++)
    {
        if(divArr[i].id.match(/favDiv_([0-9]+)/))
        {
            divCount++;
        }
    }
    if(divCount < 1)
    {
        favOrdersEmptyObj.style.display = "block";
        dropAllFavOrdersContainerObj.style.display = "none";
    }
    else
    {
        favOrdersEmptyObj.style.display = "none";
        dropAllFavOrdersContainerObj.style.display = "block";
    }
}

function limitText(limitField, limitCount, limitNum) {
    // console.log('limitNum: ' + limitNum)
    // console.log('limitCount: ' + limitCount.value)
    // console.log('limitField Length: ' + limitField.value.length)
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
        // console.log('limiting length to ' + limitNum)
    } else {
        limitCount.value = limitNum - limitField.value.length;
        // console.log('Setting limitCount to' + limitCount.value)
    }
}

addEvent(window, "load", addAllEvents, false);

