var bAppName = String(navigator.appName);
var isNS = (bAppName.indexOf("Netscape") >= 0);

var Browser = '';
Browser =
  (bAppName.indexOf("Netscape") != -1 && document.getElementById) ? 'MOZ' :
  (bAppName.indexOf("Netscape") != -1) ? 'NS' :
  ((window.opera) ? 'OP' :
  ((document.all) ? 'IE' : ''));

function getObj(idname)
{
  switch (Browser)
  {
    case 'NS':
      if (document.layers(idname)) {
        return document.layers[idname];
      } else if (document.images[idname])
        return document.images[idname];
      break;
    case 'IE':
      return document.all(idname);
      break;
    case 'MOZ':
      return document.getElementById(idname);
      break;
    case 'OP':
      return document.getElementById(idname);
      break;
    default:
      break;
  }
}

function switchdisplay(name) {
  var el = getObj(name);
  if (!el) {
    alert("Object " + name + " not found");
    return;
  }
  var show = (((el.display && el.display == 'none') || (el.style && el.style.display && el.style.display == 'none')) ? true : false);
  var val_d = show ? 'block' : 'none';
  if (el.display)
    el.display = val_d;
  if (el.style && el.style.display)
    el.style.display = val_d;
}


function switchlayer(name) {
  if (isNS) {
    document.name.visibility = "show";
  } else {
    var layer = document.all(name);
    layer.style.visibility =
     (layer.style.visibility == "visible") ? 
     "hidden" : "visible";
  }
}

function showlayer(name) {
  if (isNS) {
    document.name.visibility = "show";
  } else {
    var layer = document.all(name);
    layer.style.visibility = "visible"; 
  }
}

function hidelayer(name) {
  if (isNS) {
    document.name.visibility = "hide";
  } else {
    var layer = document.all(name);
    layer.style.visibility = "hidden"; 
  }
}

// highlight table bar
function hi(idname)
{
  var el = getObj(idname);
  if (el)
  {
    el.style.backgroundColor="#ffff00";
  }
}

// turn off light
function lo(idname)
{
  var el = getObj(idname);
  if (el)
  {
    switch (Browser) {
      case 'IE':
        el.style.backgroundColor="transparent";
        break;
      case 'NS':
        el.style.bgColor="transparent";
        break;
      default:
        el.style.backgroundColor="#ffffee";
    }
  }
}

/**
 * MANIPULATE FORM ELEMENTS
 **************************
 */

/**
 * check INPUT variables onChange
 */
function validate_nip(o_el)
{
  var myform = o_el.form;
  var v_el = String(o_el.value);

  if (!v_el || v_el == '')
    return;

  v_elorig = String(v_el);
  var re = /-/g;
  v_el = v_elorig.replace(re,"");
    
  if (parseInt(v_el) == 0 || v_el.length < 10) {
    return;
  }
  
  // check control sum
  weights = new Array(6,5,7,2,3,4,5,6,7);
  control_sum = 0;
  for (var i=0; i<weights.length; ++i) {
    control_sum += parseInt(v_el.substr(i,1)) * weights[i];
  }
  control_digit = control_sum % 11;
  // control_digit = 11 - control_digit;
  control_digit %= 11;
  control_digit %= 10;
  if (control_digit != v_el.substr(9,1)) {
    alert('W numerze NIP (' + v_elorig + ') jest błąd - nie zgadza się suma kontrolna');
    //  '(' + control_digit + '!=' + v_el.substr(9,1) + ')');
    if (o_el.style) {
      o_el.style.backgroundColor = '#ff3333';
      o_el.style.color = '#ffffff';
    }
    return false;
  }
  
  if (o_el.style) {
    o_el.style.backgroundColor = '#ddffdd';
    o_el.style.color = '#000000';
  }
  return true;
}


// set Today's date to select input element
function set_today(myform,name)
{
  var eld = myform.elements[name + '_d'];
  var elm = myform.elements[name + '_m'];
  var ely = myform.elements[name + '_y'];
  var elh = myform.elements[name + '_h'];
  var eli = myform.elements[name + '_i'];
  var els = myform.elements[name + '_s'];

  if (eld && elm && ely)
  {
    var today = new Date();
    var d = today.getDate();
    var m = today.getMonth() + 1;
    var y = today.getFullYear();
    var h = today.getHours();
    var i = today.getMinutes();
    var s = today.getSeconds();
    
    set_select(eld,d);
    set_select(elm,m);
    set_select(ely,y);
    if (elh)
      set_select(elh,h);
    if (eli)
      set_select(eli,i);
    if (els)
      set_select(els,s);
  }
}

// set current selected item in SELECT input
function set_select(selel, val)
{
  if (!selel)
    return;

  if (selel.options[selel.selectedIndex].value == val)
    return;

  var len = selel.options.length;
  for (var i=0; i<len; ++i)
  {
    var elval = selel.options[i].value;
    if (elval == val)
    {
      selel.options[i].selected = true;
      return;
    }
  }
}

// enable/disable INPUT form eleents
function enable_input(myform,doenable)
{
  if (!myform)
    return;

  for (var i=2; i<arguments.length; ++i)
  {
    var arg = arguments[i];
    var el = myform.elements[arg];
    if (el) {
      el.disabled = ((doenable) ? false : true);
    }
  }
}

function updatetext(textname,selectname) {
  var optIndex = selectname.selectedIndex;
  if (selectname.options[optIndex]) {
    textname.value = selectname.options[optIndex].text;
  }
}

/* automatic recalculation */

function recalc_items(obj) {
  var myform = obj.form;
  var n_obj = String(obj.name);

  if (n_obj.indexOf('list-') != 0)
    return;

  var spl_name = n_obj.split('-',3);
  var num = parseInt(spl_name[1]);

  var o_item_unit      = myform.elements['list-' + num + '-jm'];
  var o_item_unitprice = myform.elements['list-' + num + '-cena_jedn'];
  var o_item_quantity  = myform.elements['list-' + num + '-ilosc'];
  var o_item_discount  = myform.elements['list-' + num + '-upust_proc'];
  var o_price_netto    = myform.elements['list-' + num + '-podsuma_netto'];
  var o_vatproc        = myform.elements['list-' + num + '-vat'];
  var o_price_brutto   = myform.elements['list-' + num + '-podsuma_brutto'];

  var v_item_unitprice = parseFloat(o_item_unitprice.value);
  var v_item_quantity  = parseFloat(o_item_quantity.value);
  var v_item_discount  = parseFloat(o_item_discount.value);
  var v_price_netto    = parseFloat(o_price_netto.value);
  var v_vatproc        = parseFloat(o_vatproc.value);
  var v_price_brutto   = parseFloat(o_price_brutto.value);
  
  switch (spl_name[2]) {
    case 'ilosc':
      v_price_netto          = parseFloat (v_item_quantity * v_item_unitprice);
      v_price_netto          = parseFloat (parseFloat (parseInt (v_price_netto*100) -
                                          parseInt (v_price_netto*v_item_discount))/100);
      o_price_netto.value    = parseCena (v_price_netto);
      v_price_brutto         = v_price_netto;
      if (v_vatproc > 0)
        v_price_brutto       = (v_price_brutto * (100 + v_vatproc)) / 100;
      o_price_brutto.value   = parseCena (v_price_brutto); 
      break;
    case 'cena_jedn':
      v_price_netto          = parseFloat (v_item_quantity * v_item_unitprice);
      v_price_netto          = parseFloat (parseFloat (parseInt (v_price_netto*100) -
                                          parseInt (v_price_netto*v_item_discount))/100);
      o_price_netto.value    = parseCena (v_price_netto);
      v_price_brutto         = v_price_netto;
      if (v_vatproc > 0)
        v_price_brutto       = (v_price_brutto * (100 + v_vatproc)) / 100;
      o_price_brutto.value   = parseCena (v_price_brutto); 
      break;
    case 'podsuma_netto':
      v_price_brutto         = v_price_netto;
      if (v_vatproc > 0)
        v_price_brutto       = (v_price_brutto * (100 + v_vatproc)) / 100;
      o_price_brutto.value   = parseCena (v_price_brutto); 
      if (v_item_discount > 0)
        v_price_netto        = parseFloat ((v_price_netto * 100) / (100 - v_item_discount));
      v_item_unitprice       = parseFloat (v_price_netto / v_item_quantity);
      o_item_unitprice.value = parseCena (v_item_unitprice);
      break;
    case 'upust_proc':
      
      break;
    case 'podsuma_brutto':
      if (v_vatproc > 0)
        v_price_netto        = parseFloat ((v_price_brutto * 100) / (100 + v_vatproc));
      else
        v_price_netto        = v_price_brutto;
      o_price_netto.value    = parseCena (v_price_netto);
      if (v_item_discount > 0)
        v_price_netto        = parseFloat ((v_price_netto * 100) / (100 - v_item_discount));
      v_item_unitprice       = parseFloat (v_price_netto / v_item_quantity);
      o_item_unitprice.value = parseCena (v_item_unitprice);
      break;
    case 'vat':
      v_price_brutto         = v_price_netto;
      if (v_vatproc > 0)
        v_price_brutto       = (v_price_brutto * (100 + v_vatproc)) / 100;
      o_price_brutto.value   = parseCena (v_price_brutto); 
      break;
  }
}

// substytut sprintf("%.2f", val)
function parseCena(val)
{
  var s_val = String(Math.round(val * 100));

  if (s_val.length < 3)
    s_val = '0' + s_val;
  if (s_val.length < 3)
    s_val = '0' + s_val;

  var c_val = s_val.substr(s_val.length - 2); 
  var t_val = s_val.substr(0, s_val.length - 2);
  
  if (parseInt(c_val) > 0)
    t_val += '.' + c_val;

  return t_val;
}


// clear form
function clear_form(myform, prefix)
{
  for (var i=0; i<myform.elements.length; ++i) {
    var obj = myform.elements[i];
    var n_obj = String(obj.name);
    if (n_obj.indexOf(prefix) == 0) {
      obj.value='';
    }
  }
  return false;
}

/**
 * DICTIONARY
 */
// Wybór z listy i zapisanie do pola tekstowego

var dictname = 'curdict';
var dictform = 'mainform';

function toggletr(name) {

  var pimg = '/img/plus.png';
  var mimg = '/img/minus.png';
  var elname = 'div';

  // default values
  if (arguments.length > 1)
    pimg = arguments[1];
  if (arguments.length > 2)
    mimg = arguments[2];
  if (arguments.length > 3)
    elname = arguments[3];

  // change image
  var imgel = getObj('img' + name);
  var showlist = true;
  if (imgel) {
    imgsrc = String(imgel.src);
    showlist = (imgsrc.indexOf(pimg)==-1) ? false : true;
    imgel.src = showlist ? mimg : pimg;
  } else {
    return;
  }

  if (showlist) {
    DelCookie(name, '/');
  } else {
    SetCookie(name, 0, '/');
  }

  var els = document.getElementsByTagName(elname);
  var els_size = els.length;
  var val_v = showlist ? 'visible' : 'hidden';
  var val_d = showlist ? 'block' : 'none';
  for (var i=0; i<els_size; ++i)
  {
    el_id = String(els[i].id);
    if (el_id.indexOf('tr' + name) != -1)
    {
      if (el_id == 'tr' + name)
        continue;
      els[i].visibility = val_v;
      els[i].style.visibility = val_v;
      els[i].display = val_d;
      els[i].style.display = val_d;
    }
  }
  return false;
}

function hidetr(name) {

  var pimg = 'img/menu-arrow.gif';
  var mimg = 'img/menu-down.gif';
  pimg = '/img/p.gif';
  mimg = '/img/m.gif';
  var elname = 'div';
  var showlist = false;

  // default values
  if (arguments.length > 1)
    pimg = arguments[1];
  if (arguments.length > 2)
    mimg = arguments[2];
  if (arguments.length > 3)
    elname = arguments[3];

  // change image
  var imgel = getObj('img' + name);
  if (imgel) {
    imgel.src = showlist ? mimg : pimg;
  } else {
    return;
  }

  var els = document.getElementsByTagName(elname);
  var els_size = els.length;
  var val_v = showlist ? 'visible' : 'hidden';
  var val_d = showlist ? 'block' : 'none';
  for (var i=0; i<els_size; ++i)
  {
    el_id = String(els[i].id);
    if (el_id.indexOf('tr' + name) != -1)
    {
      if (el_id == 'tr' + name)
        continue;
      els[i].visibility = val_v;
      els[i].style.visibility = val_v;
      els[i].display = val_d;
      els[i].style.display = val_d;
    }
  }
  return false;
}


// wybierz wartość ze słownika
function choose_dict(myform, name, filename)
{
  var o_input = myform.elements[name];
  var o_dictname = myform.elements[dictname];
  if (o_dictname && o_input)
  {
    o_dictname.value = name;
    var w = window.open(filename, 'choose_dict_window',
      'height=200,width=400,menubar=false,location=false,personalbar=false,toolbar=false,status=yes,resizable=yes,scrollbars=yes,dependent=yes');
    w.focus();
  }
  return false;
}

// wybierz wartość ze słownika
function fill_dict(myform, name, filename, elname, elvalue)
{
  if (elname)
  {
    var w = window.open(filename + '?' + elname + '=' + elvalue, 'choose_dict_window',
      'height=200,width=400,menubar=false,location=false,personalbar=false,toolbar=false,status=yes,resizable=yes,scrollbars=yes,dependent=yes');
    w.focus();
  }
  return false;
}

// wpisz tekst do pola tekstowego w otwierającym oknie
function input_text(val)
{
  var w = window.opener;
  if (w)
  {
    var myform = w.document.forms[dictform];
    var o_dictname = myform.elements[dictname];
    if (o_dictname)
    {
      var v_dictname = o_dictname.value;
      var o_input = myform.elements[v_dictname];
      if (o_input)
      {
        o_input.value = val;
      }
    }
  }
}

  function DelCookie(sName, path, domain)
  {
    var today = new Date;
    var expires = new Date();
    expires.setTime(today.getTime() - 86400 -1);
    var expired = expires.toGMTString();
    var cookie = sName + "=x" + ";"; 
    if (path) cookie += "path=" + path + ";";
    if (domain) cookie += "domain=" + domain + " ;"; 
    cookie += "expires=" + expired + ';';
    document.cookie = cookie;
  }

  function SetCookie(sName, sValue, sPath)
  {
    var today = new Date;
    var expires = new Date();
    expires.setTime(today.getTime() + 365*86400); // 1 year
    var expired = expires.toGMTString();
    var sCookie = sName + "=" + escape(sValue) + ";";
    if (sPath) sCookie += "path=" + sPath + ";";
    sCookie += "expires=" + expired + ';';
    document.cookie = sCookie;
  }
  function GetCookie(sName)
  {
    // cookies are separated by semicolons
    if (document.cookie.length == 0) return null;
    var aCookie = document.cookie.split(";");
    for (var i=0; i < aCookie.length; i++)
    {
      // a name/value pair (a crumb) is separated by an equal sign
      var aCrumb = aCookie[i].split("=");
      if (aCrumb.length == 2 && sName == aCrumb[0]) { 
        if (aCrumb[1].length == 0) return "";
        return unescape(aCrumb[1]);
      }
    }
    return null;
  }

