/* page initiliazing functions */
function highlightRows() {
   if(!document.getElementsByTagName) return false;
   var rows = $$('tbody#list tr');
   
   for (var i=0; i<rows.length; i++) {
      if( !rows[i].hasClassName('no_high') ) {
        rows[i].onmouseover = function() { $(this).addClassName('highlight');}
        rows[i].onmouseout = function() { $(this).removeClassName('highlight');}
      }
   }
}

function highlightDTs() {
   if(!document.getElementsByTagName) return false;
   var rows = $$('dl#list dt');
   
   for (var i=0; i<rows.length; i++) {
    rows[i].onmouseover = function() { $(this).addClassName('highlight');}
    rows[i].onmouseout = function() { $(this).removeClassName('highlight');}
   }
   
}

function initNumberBoxes() {
  if(!document.getElementsByTagName) return false;
  var boxes = $$('input.number_input');
   
  for (var i=0; i<boxes.length; i++) {
    boxes[i].onfocus = function() { numberBox_onFocus(this);}
    boxes[i].onblur = function() { numberBox_onBlur(this); numberBox_changed(this);}
  }
}

function initAll() {
  highlightRows();
  if( Prototype.Browser.Gecko )
    highlightDTs();
  initNumberBoxes();
}

Event.observe(window, 'load', initAll,false);

/* block effects show/hide */

accBlockEffects = {
  show: function(el) {
    var o = $(el);
    if( !Element.visible(o) ) {
      if( Prototype.Browser.Gecko )
        Effect.BlindDown(o,{ duration: 0.3 });
      else
        o.style.display = 'block';
    }
  },
  
  hide: function(el) {
    var o = $(el);
    if( Element.visible(o) )  {
      if( Prototype.Browser.Gecko )
        Effect.BlindUp(o,{ duration: 0.3 });
      else
        o.style.display='none';
    }
  },
  
  toggle: function(el) {
    var o = $(el);
    if( !Element.visible(o) ) 
      this.show(o);
    else 
      this.hide(o);
  }
  
}

/* invoice edit functions */

function invoiced_changed() {
  var oInvoiced = $('invoiced');
  if( oInvoiced.value =="0" ) {
    $('invoice_number').value = "";
    $('invoice_number').readOnly=true;
    //$('amount_bt').value = "0";
    //$('amount_bt').readOnly=true;
    $('tax_rate').value = "0";
    $('tax_rate').readOnly=true;
    invoiceLines.reCalcInvoiceSum();
  }
  else {
    $('invoice_number').value = "";
    $('invoice_number').readOnly=false;
    //$('amount_bt').value = "0";
    //$('amount_bt').readOnly=false;
    $('tax_rate').value = "0";
    $('tax_rate').readOnly=false;
    invoiceLines.reCalcInvoiceSum();
  }
  
}

function isRecurrent_changed() {
  var oIsRecurrent = $('is_recurrent');
  var oTr = $('recurrent_period_block');
  if( oIsRecurrent && oTr ) {
    if( oIsRecurrent.value=="0" ) {
      oTr.style.display="none";
    }
    else {
      oTr.style.display="block";
    }
  }
}

function numberBox_onFocus(oTxt) {
  var v = parseFloat(oTxt.value);
  if(!oTxt.readOnly)
    if( isNaN(v) || v==0 )
      oTxt.value='';
}

function numberBox_onBlur(oTxt) {
  var t = oTxt.value.replace(",",".");
  var v = parseFloat(t);
  if( isNaN(v) || v==0 ) {
    oTxt.value='0';
  }
  else {
    oTxt.value = t;
  }
}

function numberBox_changed(o) {

  if(o.id=='amount_bt')
    amount_bt_changed();
  if( o.id=='tax_rate')
    tax_rate_changed();
  if( o.id=='amount' )
    amount_changed();
}

function amount_bt_changed() {
  var oAmountBT = $('amount_bt');
  var oTaxRate = $('tax_rate');
  var oAmount = $('amount');
  var vat = parseFloat(oTaxRate.value);
  if( oAmountBT && oTaxRate && oAmount ) {
    var amountBT = parseFloat(oAmountBT.value);
    if( !isNaN(amountBT) && (isNaN(vat) || vat==0) && !oTaxRate.readOnly) {
      var vat = amountBT * vat_rate;
      oAmountBT.value = format_currency(amountBT);
      oTaxRate.value = format_currency(vat);
      oAmount.value = format_currency(amountBT+vat);
    }
    else if( !isNaN(amountBT) && (isNaN(vat) || vat==0) && oTaxRate.readOnly) {
      oAmountBT.value = format_currency(amountBT);
      oAmount.value = format_currency(amountBT);
    }
  }
}

function tax_rate_changed() {
  var oAmountBT = $('amount_bt');
  var oTaxRate = $('tax_rate');
  var oAmount = $('amount');
  if( oAmountBT && oTaxRate && oAmount ) {
    var amountBT = parseFloat(oAmountBT.value);
    var vat = parseFloat(oTaxRate.value);
    if( !isNaN(amountBT) && !isNaN(vat)  && !oTaxRate.readOnly ) {
      oAmountBT.value = format_currency(amountBT);
      oTaxRate.value = format_currency(vat);
      oAmount.value = format_currency(amountBT+vat);
    }
  }
}

function amount_changed() {
  var oAmount = $('amount');
  if( oAmount ) {
    var amount = parseFloat(oAmount.value);
    oAmount.value = format_currency(amount);
  }
}

function format_currency(val) {
  var num = new NumberFormat();
  num.setInputDecimal('.');
  num.setNumber(val); // obj.value is '-1000.247'
  num.setPlaces('2', false);
  num.setCurrencyValue('$');
  num.setCurrency(false);
  num.setCurrencyPosition(num.LEFT_OUTSIDE);
  num.setNegativeFormat(num.LEFT_DASH);
  num.setNegativeRed(false);
  num.setSeparators(false, ',', ',');
  return num.toFormatted();
}

function clear_invoice_amounts() {
  var oAmountBT = $('amount_bt');
  var oTaxRate = $('tax_rate');
  var oAmount = $('amount');
  var vat = parseFloat(oTaxRate.value);
  if( oAmountBT && oTaxRate && oAmount ) {
    oAmountBT.value="0";
    oTaxRate.value="0";
    oAmount.value="0";
  }
}

function recalc_invoice_amounts_from_bt() {
  var oAmountBT = $('amount_bt');
  var oTaxRate = $('tax_rate');
  var oAmount = $('amount');
  var vat = parseFloat(oTaxRate.value);
  if( oAmountBT && oTaxRate && oAmount ) {
    var amountBT = parseFloat(oAmountBT.value);
    if( !isNaN(amountBT) && !oTaxRate.readOnly) 
      vat = amountBT * vat_rate;
    else
      vat = 0;
      
    oAmountBT.value = format_currency(amountBT);
    oTaxRate.value = format_currency(vat);
    oAmount.value = format_currency(amountBT+vat);
  }
}

function recalc_invoice_amounts_from_payable() {
  var oAmountBT = $('amount_bt');
  var oTaxRate = $('tax_rate');
  var oAmount = $('amount');
  var vat = 0;
  var amountBT = 0;
  var amount = parseFloat(oAmount.value);
  
  if( oAmountBT && oTaxRate && oAmount ) {
    if( !isNaN(amount) && !oTaxRate.readOnly) {
      amountBT = amount / (1+vat_rate);
      vat = amount-amountBT;
    }
    else {
      amountBT = amount;
      vat = 0;
    }
    oAmountBT.value = format_currency(amountBT);
    oTaxRate.value = format_currency(vat);
    oAmount.value = format_currency(amount);
  }
}

/* payments form */

function toggleChequeForm(val) {
  if( val=='0' ) {
    accBlockEffects.hide('cheque_edit');
    accBlockEffects.hide('bank_edit');
  }
  else if( val==1 ) {
    accBlockEffects.show('cheque_edit');
    accBlockEffects.hide('bank_edit');
  }
  else if( val==2 ) {
    accBlockEffects.hide('cheque_edit');
    accBlockEffects.show('bank_edit');
  }
}

/* list effects */

listEffects = {
  toggleDD: function (id) {
        var clicked = $(id);
        var showIt = !(Element.visible(clicked));
        var ddList = $$('div.inline_infobox');
        for( var i=0; i<ddList.length; i++) {
          if( Element.visible(ddList[i]) ) {
              accBlockEffects.hide(ddList[i]);
          }
        }
        if( showIt ) {
          accBlockEffects.show(clicked);
        }
      },

  toggleInlineMenu: function (id) {
      var clicked = $(id);
      var showIt = !(Element.visible(clicked));
      var ddList = $$('tbody#list .inline_menu');
      for( var i=0; i<ddList.length; i++) {
        if( Element.visible(ddList[i]) ) {
            accBlockEffects.hide(ddList[i]);
        }
      }
      if( showIt ) {
        accBlockEffects.show(clicked);
      }
    }
}

/* keyword selector for pages module */
function acc_add_keyword(keyword) {
  var tbox = $('keywords');
  var keywords = tbox.value.strip();
  if( keywords!='' )
    keywords = keywords + '|';
  keywords=keywords + keyword;
  tbox.value = keywords;  
}

function select_all_checkeboxes(selector, state) {
  var chks = $$(selector);
  if( chks ) {
    chks.each( function( o ) { 
      if( state == 1 )
        o.checked=true;
      else 
        o.checked=false;
    });
  }
}