﻿Tygrik.Change = function()
{
}

Tygrik.Change.CharHtmlLine = "<br/>";
Tygrik.Change.CharHtmlSpace = "&nbsp;";

Tygrik.Change.Round = function(dCislo, iDecimals)
{
    return Tygrik.Change.String2Double(dCislo.toFixed(iDecimals));
}

Tygrik.Change.String2Int = function(sCislo)
{
   return parseInt(sCislo);
};

Tygrik.Change.Int2String = function(iCislo)
{
   return iCislo+'';
};

Tygrik.Change.String2Double = function(sCislo)
{
   return parseFloat(Tygrik.Change.Replace(sCislo, ",", "."));
};

Tygrik.Change.Double2String = function(iCislo)
{
   return Tygrik.Change.Replace(iCislo+'', ".", ",");
};

Tygrik.Change.Money2Double = function(sCislo)
{
   return parseFloat(Tygrik.Change.Replace(Tygrik.Change.Replace(sCislo, " ", ""), ",", "."));
};

Tygrik.Change.Double2Money = function(dCislo)
{
   return Tygrik.Change.FormatNumber(Tygrik.Change.Replace(Tygrik.Change.Round(dCislo, 2)+'', ".", ","), 3, " ", 2, ",");
};

Tygrik.Change.FormatNumber = function(sValue, iThousandLength, sThousandChar, iDecimalLength, sDecimalChar)
{
    var sBefore = sValue;
    var sAfter = ""; // cisla po desetine carce

    var iPoint = sValue.indexOf(sDecimalChar);
    if (iPoint != -1)
    {
        sBefore = sValue.substr(0, iPoint);
        sAfter = sValue.substr(iPoint + 1);
    }

    var sResult = "";
    var iDigits = 0;
    while (sBefore.length > 0)
    {
        iDigits++;
        if (iDigits > iThousandLength)
        {
            sResult = sThousandChar + sResult;
            iDigits = 1;
        }

        var sLast = sBefore.substr(sBefore.length - 1, 1);        
        sResult = sLast + sResult;       
      
        sBefore = sBefore.substr(0, sBefore.length - 1);

    }

    while (sAfter.length < iDecimalLength)
    {
        sAfter = sAfter + "0";
    }
    
    sResult = sResult + sDecimalChar + sAfter;
   
    return sResult;
}


Tygrik.Change.String2DateTime = function(sDate)
{
   var bOK = false;
   var iDay = 1;
   var iMonth = 1;
   var iYear = 2000;

   if (!bOK && sDate.length == 0)
   {
     var dtDate = new Date();
     iDay = dtDate.getDate();
     iMonth = dtDate.getMonth() + 1;
     iYear = dtDate.getFullYear();
     bOK = true;
   }
   if (!bOK && sDate.indexOf(".") != -1)
   {
      var qDate = sDate.split(".");
      if (qDate.length == 3)
      {
         iDay = parseInt(qDate[0], 10);
         iMonth = parseInt(qDate[1], 10);
         iYear = parseInt(qDate[2], 10);
         bOK = true;
      }
   }
   if (!bOK && sDate.indexOf("-") != -1)
   {
      var qDate = sDate.split("-");
      if (qDate.length == 3)
      {
         iDay = parseInt(qDate[2], 10);
         iMonth = parseInt(qDate[1], 10);
         iYear = parseInt(qDate[0], 10);
         bOK = true;
      }
   }
   if (!bOK && sDate.indexOf("/") != -1)
   {
      var qDate = sDate.split("/");
      if (qDate.length == 3)
      {
         iDay = parseInt(qDate[1], 10);
         iMonth = parseInt(qDate[0], 10);
         iYear = parseInt(qDate[2], 10);
         bOK = true;
      }
   }
   if (!bOK && sDate.indexOf("\\") != -1)
   {
      var qDate = sDate.split("\\");
      if (qDate.length == 3)
      {
         iDay = parseInt(qDate[1], 10);
         iMonth = parseInt(qDate[0], 10);
         iYear = parseInt(qDate[2], 10);
         bOK = true;
      }
   }
   if (!bOK)
   {
      try
      {
         var dtDate = new Date(sDate);
         iDay = dtDate.getDate();
         iMonth = dtDate.getMonth() + 1;
         iYear = dtDate.getFullYear();
         bOK = true;
      }
      catch(e)
      {
      }
   }
   if (!bOK)
   {
     var dtDate = new Date();
     iDay = dtDate.getDate();
     iMonth = dtDate.getMonth() + 1;
     iYear = dtDate.getFullYear();
     bOK = true;
   }
   
  return new Date(iYear, iMonth - 1, iDay);
}

Tygrik.Change.DateTime2String = function(dtDate)
{
  return "Do not use this!!! " + dtDate;
}

Tygrik.Change.DateTime2StringISO = function(dtDate)
{
  var sDay = "0" + dtDate.getDate();
  sDay = sDay.substring(sDay.length - 2);
  var sMonth = "0" + (dtDate.getMonth()+1);
  sMonth = sMonth.substring(sMonth.length - 2);
  var sYear = "" + dtDate.getFullYear();

  return sYear + "-" + sMonth + "-" + sDay;
}

Tygrik.Change.DateTime2StringCZ = function(dtDate)
{
  var sDay = "" + dtDate.getDate();
  var sMonth = "" + (dtDate.getMonth()+1);
  var sYear = "" + dtDate.getFullYear();

  return sDay + "." + sMonth + "-" + sYear;
}

Tygrik.Change.DateTime2StringEN = function(dtDate)
{
  var sDay = "" + dtDate.getDate();
  var sMonth = "" + (dtDate.getMonth()+1);
  var sYear = "" + dtDate.getFullYear();

  return sMonth + "/" + sDay + "/" + sYear;
}

//----------------------------------------------
// prace s retezci

Tygrik.Change.ToUrl = function(sText)
{
   var sFrom = "áéěíóúůýžščřďťňÁÉĚÍÓÚŮÝŽŠČŘĎŤŇÄäËëÖöÜüĽ :;,.?!*/\\+@#%^&()[]<>{}=|'\"~§°“„´";
   var sTo = "aeeiouuyzscrdtnAEEIOUUYZSCRDTNAaEeOoUuL__________________________________";

   var iLen = sFrom.length;

   var sTemp = sText;
   for (var i = 0; i < iLen; i++)
   {
      sTemp = Tygrik.Change.Replace(sTemp, sFrom[i], sTo[i]);
   }
   return sTemp;
}

Tygrik.Change.Cut = function(sText, sOd, sDo)
{
   var sResult = "";
   var iBegin = sText.indexOf(sOd);
   var iEnd = sText.indexOf(sDo, iBegin);
   if (iBegin != -1 && iEnd != -1)
   {
       sResult = sText.substring(iBegin + sOd.length, iEnd);
   }
   return sResult;
}

Tygrik.Change.Replace = function(sText, sFrom, sTo)
{
   var sResult = sText;
   sResult = sResult.replace(sFrom, sTo);
   var iFind = sResult.indexOf(sFrom);
   while (iFind != -1)
   {
      sResult = sResult.replace(sFrom, sTo);
      iFind = sResult.indexOf(sFrom);
   }
   return sResult;
}

Tygrik.Change.ReplaceIgnore = function(sText, sFrom, sTo)
{
   var sResult = sText;
   sResult = Tygrik.Change.Replace(sResult, sFrom, sTo);
   sResult = Tygrik.Change.Replace(sResult, sFrom.toLowerCase(), sTo);
   sResult = Tygrik.Change.Replace(sResult, sFrom.toUpperCase(), sTo);
   return sResult;
}

Tygrik.Change.Marker_X = "{~{~{~";
Tygrik.Change.Marker_Y = "~}~}~}";

Tygrik.Change.MarkerDo = function(sMarker)
{
   return Tygrik.Change.Marker_X + sMarker + Tygrik.Change.Marker_Y;
}

Tygrik.Change.MarkerResolve = function(sText, sMarker, sResolveUsingThisValue)
{
   return Tygrik.Change.Replace(sText, Tygrik.Change.MarkerDo(sMarker), sResolveUsingThisValue);
}


//----------------------------------------------
// nahodna cisla a retezce

Tygrik.Change.RandomString = function(iSize)
{
   var sChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
   var sResult = "";
   for (var i = 0; i<  iSize; i++)
   {
      var iNum = Math.floor(Math.random() * sChars.length);
      sResult += sChars.substring(iNum, iNum + 1);
   }
   return sResult;
};

