//Cookie-Funktionen

function getConfigInt (_configText, _stringName, _defaultVal, _delimeter)
{
  var retVal = getConfigStr (_configText, _stringName, _defaultVal, _delimeter) * 1;
  
  if (retVal + "" == "NaN")
    return _defaultVal;
  return retVal;
}

function getConfigStr (_configText, _stringName, _defaultVal, _delimeter)
{
  if (!_delimeter)
    _delimeter = ";";
  if (!_defaultVal)
    _defaultVal = "";
  
  var pos = 0;
  var tempStr = "";

  _stringName += "=";
  if ((pos = _configText.indexOf (_stringName)) == -1)
    return _defaultVal;
  
  pos += _stringName.length;
  tempStr = _configText.substr (pos);
  if ((pos = tempStr.indexOf (";")) == -1)
    return tempStr;
  return tempStr.substr (0, pos);
}

function setConfigStr (_configTxt, _configStr, _value, _delimeter)
{
  if (!_delimeter)
    _delimeter = ";";
  var pos = 0;
  var tempStr   = "";
  var tempStr2  = "";
  
  _configStr += "=";

  if (_configTxt.indexOf (_configStr) == -1)
  {
    if (_configTxt.length > 0 && _configTxt.charAt (_configTxt.length - 1) != _delimeter)
      _configTxt += _delimeter;
    _configTxt += _configStr + _value;
    return (_configTxt);
  }
  
  pos = _configTxt.indexOf (_configStr) + _configStr.length;
  tempStr = _configTxt.substr (0, pos) + _value;
  tempStr2 = _configTxt.substr (pos);
  
  if (( pos = tempStr2.indexOf (_delimeter)) != -1)
  {
    tempStr += tempStr2.substr (pos);
  }
  return tempStr;
}

function setCookie (_CookieName, _cvalue, _expireDate, _Domain, _path)
{
  var cookieStr = "";

  if (!_expireDate)
  {
    _expireDate = new Date();
    _expireDate.setFullYear (_expireDate.getFullYear () + 1);
  }

  cookieStr = _CookieName + "=" + escape (_cvalue);
  cookieStr += ";expires=" + _expireDate.toGMTString();

  if (_Domain)
    cookieStr += ";domain=" + _Domain;
  if (_path)
    cookieStr += ";path=" + _path;
  document.cookie = cookieStr;
}

function getCookieStr (_cookieName, _defaultVal)
{
  if (!_defaultVal)
    _defaultVal = "";
  return unescape (getConfigStr (document.cookie, _cookieName, _defaultVal, ";"));
}

function getCookieInt (_cookieName, _defaultVal)
{
  if (!_defaultVal)
    _defaultVal = 0;
  return getConfigInt (document.cookie, _cookieName, _defaultVal, ";");
}

/********************************************************************************/
//Andere
/********************************************************************************/

function ReFormatMoney( value)
{
   var str = new String( value);
   str = str.replace( /,/gi, ".");
   
   var pos = str.lastIndexOf(".");
   var part1 = str.substring( 0, pos);
   part1 = part1.replace( /\./gi, "");
   var part2 = str.substr( pos, str.length);
   str = part1 + part2;
   
   return str;
}

function ReFormatMoneyEx ( value)
{
   var str = new String( value);
   str = str.replace( /,/gi, ".");
   
   var pos = str.lastIndexOf(".");
   var part1 = str.substring( 0, pos);
   part1 = part1.replace( /\./gi, "");
   var part2 = str.substr( pos, str.length);
   str = part1 + part2;
   return str * 1;
}

/********************************************************************************/

function FormatFloat_body (FloatValue, FormatString, Decimalseperator, Thousandseperator)
{      
  var NKS=0
  var neg = (FloatValue < 0);  
  var res="";
  var i;

  if (FormatString.search (Thousandseperator)==-1)
    Thousandseperator="";

  var DecSepPos = FormatString.search ("\\" + Decimalseperator);
  if (DecSepPos!=-1)
  {
    NKS=FormatString.length - DecSepPos -1;
  }   
    
  FloatValue = Math.abs   (FloatValue);
  var tmp = Math.pow (10, NKS)
  FloatValue = Math.round (FloatValue*tmp) / tmp;
    
  var VK = Math.floor (FloatValue)+"";    
    
  var NK = Math.round ( (FloatValue - VK) * tmp)
  NK = NK+""
  while ( NK.length < NKS)
  {
    NK = "0" + NK //führende Nullen bei NKS
  }

  //Minuszeichen
  if (neg)
      res = '-' + res;

  //Vorkommastellen    
  var vklen = VK.length 
  for (i=0; i < vklen; i++)
  {
    if ( (i>0) && (vklen - i) / 3 == Math.round((vklen - i) / 3, 0) )
      res += Thousandseperator;

    res += VK.charAt(i);
  }
        
  //Nachkommastellen    
  if (NKS>0)
  {
    res += Decimalseperator;
      
    var nklen = NK.length 
    for (i=0; i < NKS; i++)
    {
      if (nklen > i)
        res += NK.charAt(i);
      else
        res += "0";          
    }
      
  }

  return res;
}  

/********************************************************************************/

function FormatFloat (FloatValue, FormatString)
{
  var Thousandseperator="."
  var Decimalseperator=","
  
  if (!FormatString)
    FormatString="0.000,00"
  else  
    FormatString+=""
      
  return FormatFloat_body (FloatValue, FormatString, Decimalseperator, Thousandseperator);
}

/********************************************************************************/

function FormatMoney (MoneyValue)
{
  return FormatFloat (MoneyValue, "0.000,00")
}

/********************************************************************************/

function FormatMemSize (MemSizeValue)
{
   var memUnitStr;
   var memDivider;
   if ( MemSizeValue > 1073741824.0)
   {
	   memDivider = 1073741824.0;
	   memUnitStr = "GB";
   }
   else if ( MemSizeValue > 1048576.0)
   {
	   memDivider = 1048576.0;
	   memUnitStr = "MB";
   }
   else
   {
	   memDivider = 1024.0;
	   memUnitStr = "KB";
   }
   return FormatFloat (MemSizeValue/memDivider, "1.000,0") + " " + memUnitStr;
}

/********************************************************************************/

function strClean (src, mask, allowed)
{
	//lässt entweder nur die in mask enthaltenen Zeichen zu oder wirft diese raus
	var i
	var c
	var ind
	var res=""
  var len
  src=src+""
  len=src.length
  
	for (i=0; i<len; i++)
	{
		c = src.substr (i,1)
		if (allowed)
		{
			if (mask.indexOf(c)!=-1)
				res+=c
		}
		else
		{
			if (mask.indexOf(c)==-1)
				res+=c
		}
	}

	return res
}

/********************************************************************************/

function trim (src)
{
  return src.replace(/(^\s*)|(\s*$)/g, "");
}

/********************************************************************************/

function strFill (_ccount, _cchar)
{
   var retStr = "";
   for (var _i = 0; _i < _ccount; _i++)
   {
      retStr += _cchar;
   }
   return retStr;
}

/********************************************************************************/

function guessTextWidth (text, fontsize)
{
   if (!fontsize)
      fontsize = 10;
   
   text = text.replace (/  /g, " ");
      
   var multiplier = fontsize / 10;
   
   var ASCII = new Array 
      (
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //00-0F
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //10-1F
         //                                           
         04,00,00,00,00,00,00,00,00,00,00,00,00,04,00,00, //20-2F SP!"#$%&'()*+,-./
        //0  1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  
         07,07,07,07,07,07,07,07,07,07,00,00,00,00,00,00, //30-3F 0-9, :;<=>?
        //@  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O
         00,08,07,07,08,07,08,08,08,04,05,08,06,10,08,09, //40-4F @ A-O
        //P  Q  R  S  T  U  V  W  X  Y  Z
         09,10,09,08,08,08,09,13,08,07,07,00,00,00,00,00, //50-5F P-Z [\]^_
         //  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o
         00,06,07,06,07,06,04,07,07,02,03,06,02,10,07,07, //60-6F ` a-o
        //p  q  r  s  t  u  v  w  x  y  z  
         07,07,04,05,05,07,06,10,06,06,06,00,00,00,00,00, //70-7F p-z {|}~DEL
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //80-8F 
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //90-9F 
         05,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //A0-AF 
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //B0-BF 
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //C0-CF 
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //D0-DF 
         00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00, //E0-EF 
         00,00,00,00,00,00,07,00,00,00,00,00,08,00,00,00  //F0-FF 
      )
      
      var maxWidth = 0;
      var currWidth = 0;
      var charWidth = 0;
      for (var i = 0; i < text.length; i++)
      {
         if (text.substr (i, 4) == "<br>")
         {
            if (currWidth > maxWidth)
               maxWidth = currWidth;
            currWidth = 0;
            i += 4;
         }
         charWidth = ASCII[text.charCodeAt (i)];
         if (charWidth == 0)
            charWidth = 6;
            
         currWidth += charWidth;
      }
      if (currWidth > maxWidth)
         maxWidth = currWidth;

      return maxWidth * multiplier;
}

function cutText( text, maxwidth, fontsize)
{
   if ( !fontsize)
      fontsize = 10;
      
   percent = maxwidth / guessTextWidth( text, fontsize);
   if ( percent < 1)
   {
      len = Math.floor( text.length * percent);
      if ( text.length > 3)
         text = text.substr( 0, len-2) + "...";
      else
         text = text.substr( 0, len);
   }

   return text;
}


/********************************************************************************/

function parseCmdText (_txtStr, _callBackFnct)
{
   var _pos = -1;
   var _retTxt = "";
   var _cmdStr = "";
   var _cmdParam = "";
   var _cmdRet = "";
   var _pos2 = -1;

   _pos = _txtStr.indexOf ("##");
   while (_pos != -1)
   {
      _retTxt += _txtStr.substr (0, _pos);
      _txtStr = _txtStr.substr (_pos + 2);
      _pos = _txtStr.indexOf ("##");
      if (_pos != -1)
      {
         _cmdStr = _txtStr.substr (0, _pos);
         _cmdParam = "";
         _pos2 = _cmdStr.indexOf ("=");
         if (_pos2 != - 1)
         {
            _cmdParam = _cmdStr.substr (_pos2 + 1);
            _cmdStr = _cmdStr.substr (0, _pos2);
         }
         if (_callBackFnct)
            _cmdRet = _callBackFnct (_cmdStr, _cmdParam);
         
         _retTxt += _cmdRet;
         _txtStr = _txtStr.substr (_pos + 2);
 
         _pos = _txtStr.indexOf ("##");
      }
   }
   _retTxt += _txtStr;
   return _retTxt;
}

/********************************************************************************/

function checkNickname (loginNickname)
{
   var error = 0;
   if (isNaN (loginNickname))
   {
      if (loginNickname.length < 4 || loginNickname.length > 20)
      {
         error   = 6;
      }
           
      var strChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; //Reguläre Ausdr. verursachte Fehler im IE
      var tmpLoginName = loginNickname.toUpperCase ();
      for (var i = 0; i < tmpLoginName.length; i++) 
      {
  	      if (strChars.indexOf (tmpLoginName.charAt(i)) == -1) 
  	      {
            error = 7;
            break;
  	      }
      }

      if (error == 0 && (loginNickname.substring(0,1) == "_" || loginNickname.substring(loginNickname.length -1) == "_" || loginNickname.indexOf("__") >= 0))
      {
         error = 8;
      }
   }
   else
   {
      error = 9; 
   }
   
   return error;
}

/////////////////////////////////////////////////////////////////////////

function setLanguage (_lang)
{
   if (_lang != "")
      return _lang;
      
   var AccLang=Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")+"-";
   AccLang=AccLang.substr(0,3);
   if (AccLang == "de-")
      return "ger";
   else  
      return "eng";
}


function CROnValue(_value, _crString)
{
   if (!_value)
      return "";
   if (!_crString)
      return "<br />";
   return _crString;
}

function addStr2Path(_srcPath, _addPath, _delimeter)
{
   if (_addPath.substr(0,7) == "http://" || _addPath.substr(0,8) == "https://")
      return _addPath;
      
   if (!_delimeter)
      _delimeter = "/";
   
   if (_addPath.substr(0,1) == _delimeter)
      _addPath = _addPath.substr(1);
   
   if (_srcPath.substr(_srcPath.length-1) != _delimeter)
      return _srcPath + _delimeter + _addPath;
   return _srcPath + _addPath;
}