
/**
 * Format byte number to pretty format like 123, 12.5K, 10.0M
 * @param size integer to format
 * @return formated string like 123, 12.5K, 10.0M
 */
function formatSize(size) {
	var sz = ['', 'K', 'M', 'G'];
	var ret = size;
	var i = 0;
	while(ret > 1024) {
		ret = ret / 1024;
		i++;
	}

	ret = Math.round(ret * 10) / 10;
	return ret + sz[i];
}

/**
 * Convert pixel value to em
 * @param val strin presentation of size e.g. 16px, 1.2em 
 * @return converted to fload value. e.g 16px == 1em
 */
function pxToem(val) {
	if (val.endsWith('px')) {
		return parseFloat(val) / 16.0;
	} else {
		return parseFloat(val);
	}
}

/**
 * Convert rgb(1,2,3) to 010203
 * @param color rgs color presentation
 * @return hex color presntation. No # at the begining!
 */
function rgb2hex(color)
{
  color = color.replace(/\s/g,"");
  var aRGB = color.match(/^rgb\((\d{1,3}[%]?),(\d{1,3}[%]?),(\d{1,3}[%]?)\)$/i);

  if(aRGB)
  {
    color = '';
    for (var i=1;  i<=3; i++) color += Math.round((aRGB[i][aRGB[i].length-1]=="%"?2.55:1)*parseInt(aRGB[i])).toString(16).replace(/^(.)$/,'0$1');
  }
  else color = color.replace(/^#?([\da-f])([\da-f])([\da-f])$/i, '$1$1$2$2$3$3');
  
  return color;
}




function setTitle(title)
{
	top.document.title = title;
}

function trim(str)
{
	while(1)
	{
		var f = str.indexOf(' '); if(f!=0)f=0; else f++;
		var l = str.lastIndexOf(' '); if(l!=str.length-1)l=str.length; 
		st = str;	str = str.substring(f,l);
		if(st == str) break;
	}
	return str;
}
function HasOneOf(sample, str) //âîçâðàùàåò true åñëè â str ñóùåñòâóåò õîòÿ áû îäèí ñèìâîë èç sample
{	
	var len = sample.length;
	for(i=0;i<len;i++)
	{
		if(str.indexOf(sample.charAt(i),0) != -1)
			return true;
	}
	return false;
}

function IsNubmer(num)
{
	num = trim(num);
	if(HasOneOf(" abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ<>/\";:{}[]`~?!@#$%^&*()=", num))
		return false;
	if(HasOneOf("àáâãäå¸æçèéêëìíîïðñòóôõö÷øùüûúýþÿÀÁÂÃÄÅ¨ÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÛÚÝÞß", num))
		return false;
	if(num.indexOf("-") > 0 || num.indexOf("+") > 0)
		return false;
	return true;
}

function CheckAddress(url, mail) //ïðîâåðÿåò ïðàâèëüíîñòü internet-àäðåñîâ
{
	
  if(url.indexOf("http://") != -1)  url = url.substr(7, url.length);
  if(url.indexOf("mailto:") != -1)  url = url.substr(7, url.length);  
  if(!url.length){return true};
  var ai = url.indexOf("@");
  if(mail && (ai <= 0 || ai >= url.length-3)) return false;

  var ind = url.indexOf("~");
  if(ind != -1)
  {
  tmp = url.substring(0,ind);
  tmp += url.substring(ind+1, url.length);
  url = tmp;
  }  
  if(mail && ai != -1)
  {
  tmp = url.substring(0,ind);
  tmp += url.substring(ind+1, url.length);
  url = tmp;
  }
  var before = url.substring(0,ai);
  var after = url.substring(ai+1,url.length);
  if(before != escape(before) || after != escape(after) || url.length <=4 || url.indexOf('.') <= 0 || url.lastIndexOf('.') >= url.length-2)
    return false;
  else
   return true;
   
	/*
	var ret = true;
	if(value.indexOf("http://") != -1)  value = value.substr(7, value.length);
    if(value.indexOf("mailto:") != -1)  value = value.substr(7, value.length);  

    if(value != null && value.length > 0)
    {
        ret = false;
		var emailPat = /^(.+)@(.+)$/;
		if(!mail)
			emailPat = /^(.{2,})(\..+)*(\..{2})$/;
		var specialChars="\\(\\)<>,;:\\\\\\\"\\.\\[\\]";
		if(mail)
			specialChars += "@";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");

		var matchArray=value.match(emailPat);

		if(matchArray != null)
        {
			var user=matchArray[1];
			var domain=matchArray[2];
			if(user.match(userPat) != null)
			{
				var IPArray = domain.match(ipDomainPat);
				if(IPArray != null)
				{
					ret = true;
					for(var i = 1; i <= 4; i++)
					{
						if(IPArray[i] > 255)
						{
							ret = false;
							break;
						}
					}
				}
				else
				{
					var domainArray=domain.match(domainPat);
					if(domainArray != null)
					{
						ret = true;
						var atomPat = new RegExp(atom,"g");
						var domArr=domain.match(atomPat);
						var len=domArr.length;
						if(domArr[domArr.length-1].length < 2 || domArr[domArr.length-1].length > 3)
							ret = false;
						else if(len < 2)
							ret = false;
					}
				}
			}
		}
	}
	return ret;*/
}
