//Copyright© 2004. DsineNet info@dsinenet.se, All rights reserved.
//Får ej kopieras eller säljas utan DsineNet´s skriftliga medgivande.

var pageLoaded=false;         // define global status

var sORCntNumDefault = 0;     // default order rows count
var sORTotNumDefault = 0.0;   // default order rows total amount

var sORCntNumNew = 0;         // default order rows count
var sORTotNumNew = 0.0;       // default order rows total amount

var sORCnt = null;
var sORTot = null;
var imgCart = null;

var isDOM = (document.getElementById)? true: false;
var isNS = (document.layers)? true: false;
var isIE = (document.all)? true: false;


//document.onkeydown = keyDnXX;
// document.onkeyup = keyUpXX;

var shoppingCart_oldonload = window.onload;
window.onload = shoppingCart_onload;


//document.onpropertychange = propertychange;
//document.onchange = changeXX;
//document.onpropertychange = changeXX;

function shoppingCart_onload() {
  pageLoaded=true;            
//  window.status = 'Page is loaded 2 - OK!' + ' isDOM=' + isDOM + ' isNS=' + isNS + ' isIE=' + isIE;

  var msg='-------';
  var s;
  var inputTags = document.getElementsByTagName("INPUT");
  for (var i=0;i<inputTags.length;i++) {
    s=inputTags[i];
    if (s.name.indexOf('orderItem:') == 0) {
      s.onkeydown = qtyKeyDn;
      s.onkeypress = qtyKeyPress;
      s.onkeyup = qtyKeyUp;
      s.onchange = qtyChanged;
      s.onblur = qtyBlur;
      msg += '\nx' + i + ' ' + s.name;

    } else if (s.name == 'buy1') {
      s.onclick = addSubDelClick;
      msg += '\nx' + i + ' ' + s.name;

    } else if (s.name == 'add1') {
      s.onclick = addSubDelClick;
      msg += '\nx' + i + ' ' + s.name;

    } else if (s.name == 'sub1') {
      s.onclick = addSubDelClick;
      msg += '\nx' + i + ' ' + s.name;

    } else if (s.name == 'delete') {
      s.onclick = addSubDelClick;
      msg += '\nx' + i + ' ' + s.name;

    } else if (s.name == 'empty') {
      s.onclick = addSubDelClick;
      msg += '\nx' + i + ' ' + s.name;
    }

  }
  msg += '\n-------'
/*
  alert(msg);
*/

  dbgMsg(1, '  shoppingCart_onload: msg = ' + msg)


  setInitialDefaultTotals();
  
  var f = document.getElementsByName('autoSubmit')[0];
  if (f != null) {
    window.status = document.referrer;
  }

  if (shoppingCart_oldonload)
    shoppingCart_oldonload();

}

function setInitialDefaultTotals() {
  dbgMsg(1, 'setInitialDefaultTotals')

  sORCnt = document.getElementById('orCounts');
  sORTot = document.getElementById('orTotals');
  imgCart = document.getElementById('cartImg');


  /* set default order rows count */
  var iorc = document.getElementById('initOrderRowCounts');
  if (iorc != null) {
    var iorcValObj = iorc.value;
    if (iorcValObj != null) {
      var iorcValObjNumTest = parseInt(iorcValObj);
      if (!isNaN(iorcValObjNumTest)) {
        sORCntNumDefault = iorcValObjNumTest;
      }
      dbgMsg(1, '  iorcValObjNumTest = ' + iorcValObjNumTest)
    }
  }

  /* set default order rows total amount */
  var iort = document.getElementById('initOrderRowTotals');
  if (iort != null) {
    var iortValObj = iort.value;
    if (iortValObj != null) {
      var iortValObjNumTest = parseFloat(iortValObj);
      if (!isNaN(iortValObjNumTest)) {
        sORTotNumDefault = iortValObjNumTest;
      }
      dbgMsg(1, '  iortValObjNumTest = ' + iortValObjNumTest)
    }
  }

}

function setDefaultTotals() {
  sORCntNumDefault = sORCntNumNew;
  sORTotNumDefault = sORTotNumNew;
}





function sendForm() {
  dbgMsg (1, 'sendForm')
//if (autoUpdateCart != undefined) {
  if (typeof(autoUpdateCart) != 'undefined') {
    if (autoUpdateCart) {
      var f = document.getElementsByName('frmOrderRows')[0];
      if (!f) f = document.getElementsByName('frmCatalog')[0];
      if (f != null) {
        var a = document.getElementsByName('sumFrame')[0];
        if (a != null) {
  //      window.status = 'auto-submitting to summary frame: name=' + f.name + ' action=' + f.action + ' to ' + a.name;
          window.status = '';
          f.submit();
        } else {
          window.status = 'no summary frame found';
        }
        setDefaultTotals();
      } else {
        window.status = 'no form found';
        setDefaultTotals();
      }
    } else {
      window.status = 'no auto submit';
      setDefaultTotals();
    }

  } else {
    window.status = 'autoUpdateCart = not found';
    setDefaultTotals();
  }

}




function qtyBlur(e) {
  dbgMsg (1, 'qtyBlur')
  if (!e) {
    var e = window.event;           
    var s = e.srcElement;           
  } else {
    var s = e.target;              
  }
  if (s.value != s.defaultValue) {
    s.defaultValue = s.value;
    window.status = 'BLUR SUBMITTING';
    sendForm();
  }
}



function qtyKeyDn(e) {
  var msg = 'qtyKeyDn';
  dbgMsg (1, msg)

//  var e = window.event;          
//  var s = e.srcElement;

  if (!e) {
    var e = window.event;           
    var s = e.srcElement;           
  } else {
    var s = e.target;              
  }



  var k = e.keyCode;       

  var type = e.type;              
  var id = s.id;                 
  var name = s.name;              
  var retval = false;

  msg=msg + "\ntype=" + type;
  msg=msg + "\nid=" + id;
  msg=msg + "\nname=" + name;
  msg=msg + "\nkeyCode=" + k;



  if (k == 13) {
    if (s.value != s.defaultValue) {
      s.defaultValue = s.value;
      window.status = 'CHANGED SUBMITTING keyCode=' + k;
      sendForm();
 //     s.focus();
    } else {
      window.status = 'NO CHANGE keyCode=' + k;
    }

  } else {

    if (48 <= k && k <= 57) {                  // ASCII 0-9
      retval = true;
    } else if (96 <= k && k <= 105) {          // NUMKB 0-9
      retval = true;
    } else if (k == 8 || k == 9 || k == 46) {  // 8=backSpace 9=tab 46=del
      retval = true;
    } else if (k == 37 || k == 39) {           // 37=leftArr 39=rightArr
      retval = true;
    } else {
      window.status = 'keyCode=' + k;
    }
  }

  msg=msg + "\nretval=" + retval;

  dbgMsg (2, msg)
  
  return retval;   

}

function qtyKeyPress(e) {
  var msg = 'qtyKeyPress';
  dbgMsg (1, msg)
  if (!e) {
    var e = window.event;           
    var s = e.srcElement;           
  } else {
    var s = e.target;              
  }
}

function qtyKeyUp(e) {
  var msg = 'qtyKeyUp';
  dbgMsg (1, msg)
  if (!e) {
    var e = window.event;           
    var s = e.srcElement;           
  } else {
    var s = e.target;              
  }
  qtyModified(s);
}

function addSubDelClick(e) {
  var msg = 'sub1click';
  dbgMsg (1, msg)
  if (!e) {
    var e = window.event;           
    var s = e.srcElement;           
  } else {
    var s = e.target;              
  }

  var orderCode = s.value;

  var tRow = s;
  while (tRow.tagName != 'TR')
    tRow = tRow.parentNode;

  var inputTags = tRow.getElementsByTagName("INPUT");
  for (var i=0;i<inputTags.length;i++) {
    q=inputTags[i];
    if (q.name.indexOf(orderCode) == 0) {   //'orderItem:'
      break;
      msg += '\nx' + i + ' ' + q.name;
    }
  }

  var n = q.value * 1;

  if (s.name == 'delete' || s.name == 'empty') {
    q.value = '';

  } else {

    if (s.name == 'buy1' || s.name == 'add1') {
      n++;
    } else {
      n--;
    }

//    n+=(s.name == 'add1')?1:-1;
    
    if (n < 1) {
      q.value = '';
    } else {
      q.value = n;
    }
  }

  qtyModified(q);

  if (q.value != q.defaultValue) {
    q.defaultValue = q.value;
    window.status = 'BLUR SUBMITTING';
    sendForm();
  }

  if (s.name == 'delete') {
    tRow.style.display='none';

  }
  


  return false;
  
}



/* ----------------------------------- */
/* added 2010-01-12 14:56 by gk        */
/* ----------------------------------- */
function setInpDisplay(tRow, onNames, offNames) {
    dbgMsg(1, 'tRowTagname = ' + tRow.tagName);
    var inpColl = tRow.getElementsByTagName('INPUT');
    dbgMsg(1, 'inpColl.length = ' + inpColl.length)

    for (var i = 0;i<inpColl.length;i++) {
      for (var j = 0;j<offNames.length;j++) {
        if (offNames[j]  == inpColl[i].name) {
          dbgMsg(1, i + ' FOUND = hiding: ' + offNames[j])
          inpColl[i].style.display = 'none';
        } else {
          dbgMsg(1, i + ' not found = ' + offNames[j])
        }
      }
      for (var j = 0;j<onNames.length;j++) {
        if (onNames[j]  == inpColl[i].name) {
          dbgMsg(1, i + ' FOUND showing: = ' + onNames[j])
          inpColl[i].style.display = '';
        } else {
          dbgMsg(1, i + ' not found = ' + onNames[j])
        }
      }
    }
}
/* ----------------------------------- */



function qtyChanged(e) {
  if (!e) {
    var e = window.event;           
    var s = e.srcElement;           
  } else {
    var s = e.target;              
  }
  dbgMsg (1, 'qtyChanged')
}


function qtyModified(s) {
  var msg = 'qtyModified: ' + s.name + ' = (' + s.value + ')';
//  dbgMsg (1, msg)



  if (true) {
    
    
    
    
    s.style.fontWeight = ((s.value != s.defaultValue) ? 'bold' : 'normal');
//    s.runtimeStyle.fontWeight = ((s.value != s.defaultValue) ? 'bold' : 'normal');
//  window.status += 'change=OK';
//  window.status = 'y ' + s.name + ' ' + e.propertyName;
    hideTotPrice();


    var sORCntNum = sORCntNumDefault;
    var sORTotNum = sORTotNumDefault;
    var newRowAmount = 0;
    var oldRowAmount = 0;

    var defaultQty = 0;
    var defaultQtyTest = new Number(strToNum(s.defaultValue));
    if (!isNaN(defaultQtyTest)) {
      defaultQty = defaultQtyTest;
    }

    var newQty = 0;
    var newQtyTest = new Number(strToNum(s.value));
    if (!isNaN(newQtyTest)) {
      newQty = newQtyTest;
    }
    msg = msg + '\nnewQty=' + newQty;

    var tRow = s;
    while (tRow.tagName != 'TR')
      tRow = tRow.parentNode;

//  if (newQty > 0) {
    if (!isNaN(newQtyTest)) {
      var onNames = new Array ('add1', 'sub1', 'delete', 'empty');
      var offNames = new Array ('buy1');
    } else {
      var onNames = new Array ('buy1');
      var offNames = new Array ('add1', 'sub1', 'delete', 'empty');
    }

    setInpDisplay(tRow, onNames, offNames);


    var unitPrice = 0;
    var unitPriceAttr = s.getAttribute('unitprice');
    if (unitPriceAttr != null) {
      msg = msg + '\nunitPriceAttr = ' + unitPriceAttr;
      unitPriceTest = parseFloat(unitPriceAttr);
      if (!isNaN(unitPriceTest)) {
        unitPrice = unitPriceTest;
        msg = msg + '\nunitPrice = ' + unitPrice;

        if (!isNaN(defaultQtyTest)) {
          sORCntNum -= 1;
          oldRowAmount = unitPrice * defaultQty;
          sORTotNum -= oldRowAmount;
        }

        if (!isNaN(newQtyTest)) {
          sORCntNum += 1;
          newRowAmount = unitPrice * newQty;
          sORTotNum += newRowAmount;
        }

        sORCntNumNew = sORCntNum;
        sORTotNumNew = sORTotNum;

        if (imgCart != null) {
          imgCart.src=sORCntNum?imgNotEmpty:imgEmpty;
        }

        if (sORCnt != null) {
          if (sORCntNum == 0)
            sORCnt.innerHTML = strNoRows;
          else if (sORCntNum == 1)
            sORCnt.innerHTML = '1 ' + strOneRow;
          else
            sORCnt.innerHTML = sORCntNum + ' ' + strMultiRows;
        }

        if (sORTot != null) {
          var sORTotText = numToCur(sORTotNum, '0,00');
          msg = msg + '\nsORTotText = ' + sORTotText;
          if (sORTot.innerText != null) {
            sORTot.innerText = sORTotText;
          } else {
            sORTot.textContent = sORTotText;
          }
        }

        var i = s.name.indexOf('orderItem:')
        if (i == 0) {
          var j = s.name.indexOf(':');
          var raId = 'rowAmount' + s.name.substr(j);
          var ra = document.getElementById(raId);
          if (ra != null) {
            ra.style.color='blue';                /* row amount */
            if (!isNaN(newQtyTest)) {
              var rowAmountText = numToCur(newRowAmount, '0,00');
            } else {
              var rowAmountText = ' ';
            }
            ra.innerHTML = rowAmountText;
          }
          msg += '\nx' + i + ' ' + s.name;
        }


      } /* !isNaN(unitPriceTest) */

    } /* unit price found */

  }

  dbgMsg (1, msg)
  
}



/*
orp ora ort
*/

function hideTotPrice() {
//  var rowsTot = document.getElementById("");
//  var totCost = document.getElementById("totCost");

  var totCostTBody = document.getElementById("totCostTBody");
  if (totCostTBody != null) {
    totCostTBody.style.display = 'none';
  }

  var paymentTBody = document.getElementById("paymentTBody");
  if (paymentTBody != null) {
    paymentTBody.style.display = 'none';
  }

  var calcCostTBody = document.getElementById("calcCostTBody");
  if (calcCostTBody != null) {
    calcCostTBody.style.display = '';
  }
  
}




