  /******************************************************************
    Admin Maker, created by Rédl Vilmos 2008-2009.

    unit name: formats.js
    description:
       Input controll - beviteli mezők szűrése és formázása.
  *******************************************************************/
  
/*
function _DoCheck(enabled, event)
function CurrencyOnly(event)
function DateOnly(event)
function QuantityOnly(event)
function PostCodeOnly(event)
function PhoneOnly(event)
function InnerNameOnly(event)
function TimeOnly(event)
function DetectNEnter(event, tagName)

function CurrencyToNum(objname, setobj_ = true)
function setDecimalPoint(objname)
function NumToCurrency(objname)
function NumStrToCurrency(s)
function isValidDate(objname)
function _checkTimeFormat(objname)
function isValidTime(objname)
*/


// INPUT BOX KEY CONTROL ---------------------------------------------------------------------------

function _DoCheck(enabled, event)
{
  var specChars = {8:"BackSpace"};
  

  if(window.event) key = window.event.keyCode;
  else
  if(event.which) key = event.which;
  
  if ( (enabled.indexOf(String.fromCharCode(key)) >= 0) || (key in specChars) )
  { return true; }
  else
  {
    if(window.event) window.event.returnValue = false;
    return false;
  }
}


function CurrencyOnly(event)
{
  return _DoCheck("1234567890,.", event);
}


function DateOnly(event)
{
  return _DoCheck("1234567890-", event);
}


function QuantityOnly(event)
{
  return _DoCheck("1234567890,.", event);
}


function PostCodeOnly(event)
{
  return _DoCheck("1234567890", event);
}


function PhoneOnly(event)
{
  return _DoCheck("1234567890-()/;", event);
}


function InnerNameOnly(event)
{
  return _DoCheck("1234567890abcdefghijklmnopqrstuvwxyz-_ABCDEFGHIJKLMNOPQRSTUVWXYZ", event);
}


function YearOnly(event)
{
  return _DoCheck("1234567890", event);
}


function TimeOnly(event)
{
  return _DoCheck("1234567890:,", event);
}


function DetectNEnter(event, tagName)
{
  var key;
  if(window.event) key = window.event.keyCode;
  else
  if(event.which) key = event.which;
  
  if (key == 13)
  {
    event.returnValue = false;
    event.cancelBubble = true;
    document.getElementById(tagName).click();
  }
  else return false;
}






// INPUT BOX NUMBER CORRECTION ----------------------------------------------------------------------

_decimalPoint='.';
_thousandSep=' ';
_currencyPrecision = 2;
_timeSep = ':';

// számformátumból sima számsort csinál
function CurrencyToNum(objname, opt_setobj)
{
  var obj=document.getElementById(objname);
  var text=obj.value;
  var s='';
  for (i=0; i<=text.length-1; i++)
  {
    if (text.charAt(i) != _thousandSep) s+=text.charAt(i);
  }
  if ((opt_setobj===undefined) || opt_setobj) {
      obj.value=s;
      obj.select();
      }
  
  return s;
}


// _decimalPoint-ra állítja a vesszőt
function setDecimalPoint(objname)
{
  var obj = document.getElementById(objname);
  var text = obj.value;
  var s = '';
  var decimalPointWas = (text.indexOf(_decimalPoint) >= 0);
  for (i=0; i<=text.length-1; i++)
  {
    switch (text.charAt(i)){
     case ',':
       if (!decimalPointWas) { s+=_decimalPoint; decimalPointWas=1; }
       break;
     default: s+=text.charAt(i);
   }
  }
  obj.value = s==''?0:s;
}  


// a paraméterként átadott számsorból számformátumbot csinál
function NumStrToCurrency(s)
{
  // thousand separator
  var cnt = 0;
  var dec = s.indexOf(_decimalPoint); if (dec == -1) dec=s.length;
  var s2 = s.substr(dec+1);
  for (i=dec; i>=0; i--)
  {
    if (cnt<3)
    {
      s2=s.charAt(i)+s2;
      cnt++;
    }
    else
    {
      cnt=1;
      s2=_thousandSep+s.charAt(i)+s2;
    }
  }
  result=s2;
  
  // cut to #.00 format
  var decpt=result.lastIndexOf(_decimalPoint);
  if (decpt!=-1) result=result.substring(0, decpt + (_currencyPrecision+1));
  
  return result;
}


// a begépelt számsorból számformátumbot csinál
function NumToCurrency(objname)
{
  setDecimalPoint(objname);
  var obj = document.getElementById(objname);
  var s = obj.value;

  obj.value = NumStrToCurrency(s);
}



function isValidDate(objname)
{
  var result = true;
  var obj = document.getElementById(objname);
  if (!isDate(obj.value,'yyyy-mm-dd'))
  {
    obj.select();
    alert('Hibás dátum.\nA dátumot éééé-hh-nn formában kell megadni!');
    obj.focus();
    result = false;
  }
  return result;
}



function _checkTimeFormat(objname)
{
  var obj = document.getElementById(objname);
  var re = /,/g;
  obj.value = obj.value.replace(re, _timeSep);

  if (!obj.value) return;
  var a,b,c,f,err=0;
  a = obj.value;
  if (a.length != 5) err=1;
  b = a.substring(0, 2);
  c = a.substring(2, 3);
  f = a.substring(3, 5);
  if (/\D/g.test(b)) err=1; //not a number
  if (/\D/g.test(f)) err=1;
  if (b<0 || b>23) err=1;
  if (f<0 || f>59) err=1;
  if (c != ':') err=1;
  return (err!=1);
}



function isValidTime(objname)
{
  var result = true;
  if (!_checkTimeFormat(objname))
  {
    obj.select();
    alert ('Hibás időpont.\nAz időt XX:XX formában kell megadni (óra:perc)!');
    obj.focus();
    result = false;
  }
  return result;
}




