
// ************************************************************************************************************************
// *** ЧИСЛА ***
// ************************************************************************************************************************

// Подготавливает значение к преобразованию в число
function prepareNumber(value, forCheck)
{
	var number = null;
	
	if (isNullOrEmpty(value) == false)
	{
		number = value.toString()
		if (number.length > 0)
		{
			number = number.replace(/\s/igm, "");
			number = number.toLowerCase();
			
			if (forCheck == false)
			{
				if (number == "true")
				{
					number = 1;
					return number;
				}
				else if (number == "false")
				{
					number = 0;
					return number;
				}
			}

			number = number.replace(",", ".");
			number = number.replace(/^0*([0-9]+\.?[0-9]*)$/igm, "$1");
		}
		else
		{
			number = null;
		}
	}
	
	return number;
}

// Преобразование в целое число
function toInt(value, defaultValue)
{
	if (isNullOrEmpty(defaultValue) == true)
	{
		defaultValue = null;
	}

	var number = null;
	
	if (isNullOrEmpty(value) == false)
	{
		number = prepareNumber(value, false);
		if (isNullOrEmpty(number) == false)
		{
			if (isNaN(number) == false)
			{
				number = parseInt(number);
			}
			else
			{
				number = null;
			}
		}
		else
		{
			number = null;
		}
	}
	
	if (number == null)
	{
		number = defaultValue;	
	}
	
	return number;
}

// Проверка является ли значение целым числом
function isInt(value)
{
	var result = false;	
	var number = prepareNumber(value, true);
	
	if (isNullOrEmpty(number) == false)
	{
		if (isNaN(number) == false)
		{	
			if (number.toString().indexOf(".") == -1)
			{
				result = true;
			}
		}
	}

	return result;
}

// Преобразование в число двойной точности
function toFloat(value, defaultValue)
{
	if (isNullOrEmpty(defaultValue) == true)
	{
		defaultValue = null;
	}

	var number = null;
	
	if (isNullOrEmpty(value) == false)
	{
		number = prepareNumber(value, false);
		if (isNullOrEmpty(number) == false)
		{
			if (isNaN(number) == false)
			{
				number = parseFloat(number);
			}
			else
			{
				number = null;
			}
		}
		else
		{
			number = null;
		}
	}
	
	if (number == null)
	{
		number = defaultValue;	
	}
	
	return number;
}

// Проверка является ли значение числом двойной точности
function isFloat(value)
{
	var result = false;
	var number = prepareNumber(value, true);
	
	if (isNullOrEmpty(number) == false)
	{
		if (isNaN(number) == false)
		{	
			result = true;
		}
	}

	return result;
}

// Добавляет необходимое количество нулей к числу
function formatZero(value, count)
{
    var result = ""; // результат
    var zeroString = ""; // строка нулей
    
    for (var i = 1; i <= count; i++ )
    {
        zeroString += 0;
    }
    
    result += zeroString;
    result += value.trim();                
    result = result.substr(result.length - count, count)

    return result;
}

// ************************************************************************************************************************
// *** ЛОГИЧЕСКИЕ ЗНАЧЕНИЯ ***
// ************************************************************************************************************************

// Преобразование значения в логическое значение
function toBoolean(value, defaultValue)
{
	var bool = null;

	if (isNullOrEmpty(defaultValue) == true)
	{
		defaultValue = false;
	}

	if (isBoolean(value) == true)
	{
		return value;
	}

	if (isNullOrEmpty(value) == false)
	{
		bool = value.toString().toLowerCase().trim();
		if (bool.length > 0)
		{
			if (bool == "true")
			{
				bool = true;
			}
			else if (bool == "false")
			{
				bool = false;
			}
			else
			{
				bool = toInt(bool);
				if (bool > 0)
				{
					bool = true;
				}
				else
				{
					bool = false;
				}
			}
		}
		else
		{
			bool = null;
		}
	}
	
	if (bool == null)
	{
		bool = defaultValue;
	}
	
	return bool;
}

// Проверка является ли значение логическим значением
function isBoolean(value)
{
	var result = false;
	
	if (isNullOrEmpty(value) == false)
	{
		result = (typeof(value.valueOf()) == "boolean");
	}

	return result;
}

// ************************************************************************************************************************
// *** ДАТЫ ***
// ************************************************************************************************************************

// Преобразование значения в дату
function toDate(value, defaultValue)
{
	var dateTime = null;	
	var date = null;
	var time = null;

	if (isNullOrEmpty(defaultValue) == true)
	{
		defaultValue = null;
	}
	
	if (isDate(value) == true)
	{
		return value;
	}

	if (isNullOrEmpty(value) == false)
	{
		dateTime = value.trim();
		if (dateTime.length > 0)
		{
			dateTime = dateTime.replace("\/", ".");
			dateTime = dateTime.replace("\\", ".");
			
			var dateTimeRegExp = new RegExp("^(\\d{1,2}\.\\d{1,2}\.\\d{1,4})(\\s\\d{1,2}:\\d{1,2}(:\\d{1,2})?)?$");			
			var dateTimeMatchList = dateTimeRegExp.exec(dateTime);
			
			if (isNullOrEmpty(dateTimeMatchList) == false)
			{
				date = RegExp.$1;
				time = RegExp.$2;
				
				if (date.length > 0)
				{
					var year = 0;
					var month = 0;
					var day = 0;
					var hour = 0;
					var minute = 0;
					var second = 0;
					
					var dateRegExp = new RegExp("(\\d{1,2})\.(\\d{1,2})\.(\\d{1,4})")
					var dateMatchList = dateRegExp.exec(date);
					
					if (isNullOrEmpty(dateMatchList) == false)
					{
						year = RegExp.$3;
						month = RegExp.$2;
						day = RegExp.$1;
						
						if (time.length > 0)
						{
							var timeRegExp = new RegExp("\\s(\\d{1,2}):(\\d{1,2}):?(\\d{1,2})?")
							var timeMatchList = timeRegExp.exec(time);
							
							if (isNullOrEmpty(timeMatchList) == false)
							{
								hour = RegExp.$1;
								minute = RegExp.$2;
								second = RegExp.$3;
							}
							
							timeMatchList = null;
							timeRegExp = null;
						}
						
						year = toInt(year, 0);
						month = toInt(month, 0);
						day = toInt(day, 0);
						hour = toInt(hour, 0);
						minute = toInt(minute, 0);
						second = toInt(second, 0);

						try
						{
							dateTime = new Date(year, month - 1, day, hour, minute, second);
							if ((dateTime.getMonth() + 1) != month)
							{
								throw "Указанная Вами дата имеет некорректный формат!"
							}
						}
						catch(e)
						{
							dateTime = null;
						}
					}
					
					dateMatchList = null;
					dateRegExp = null;
				}
				else
				{
					dateTime = null;
				}
			}
			else
			{
				dateTime = null;
			}

			dateTimeMatchList = null;
			dateTimeRegExp = null;		
		}
		else
		{
			dateTime = null;
		}
	}

	if (dateTime == null)
	{
		dateTime = defaultValue;	
	}
	
	return dateTime;
}

// Проверка является ли значение датой
function isDate(value)
{
	var result = false;

	if (isNullOrEmpty(value) == false)
	{
		if (typeof(value) == "object")
		{
			try
			{
				value.getTime();
				result = true;
			}
			catch(e)
			{
				result = false;
			}
		}
	}

	return result;
}


// ************************************************************************************************************************
// *** МАТЕМАТИКА ***
// ************************************************************************************************************************

// Округление чисел
function round(number, places)
{
	var divider = 1;
	
	for (var i = 1; i < places; i++)
	{
		divider *= 10;
	}	
	
	return Math.round(number * divider) / divider	
}

// ************************************************************************************************************************
// *** ОКНА ***
// ************************************************************************************************************************

// Создание нового окна
function getWindow(url, windowName, width, height)
{
    if (isNullOrEmpty(windowName) == true)
    {
        windowName = "";
    }

	if (isNaN(width) || isNaN(height)) 
	{
	    width = 300; 
	    height = 650;
    }
    
	var currentWindow = window.open(url, windowName, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=yes,width=" + width + ",height=" + height);
	currentWindow.focus();
}

// ************************************************************************************************************************
// *** РАЗНОЕ ***
// ************************************************************************************************************************

// Проверка переменной на пустые значения
function isNullOrEmpty(value)
{
    if (value == undefined || value == null || typeof(value) == "undefined")
    {
        return true;
    }
    else
    {
        return false;
    }
}


function GoToVideoPart(divid, mediapath, mediatime, width, height)
{
	var Div = document.getElementById(divid);
	
	var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
	
	//--------------------------------------------------
	var playerhtml = '';
	playerhtml = '<object id="MediaPlayer1" width="' + width + '" height="' + height + '"' +
	  'classid="CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6"' +
	  'type="application/x-oleobject">' +
		'<param name="URL" value="' + mediapath + '">' +
		'<param name="ShowControls" value="true">' +
		'<param name="VideoBorderWidth" value="0">' +
		'<param name="AutoStart" value="true">' +
		'<param name="EnableContextMenu" value="false">' +
		'<param name="EnablePositionControls" value="true">' +
		'<param name="stretchToFit" value="false">' +
		'<param name="uiMode" value="full">' +
		'<param name="CurrentPosition" value="' + mediatime + '">' +
		'<embed' +
			'src="' + mediapath + '" mce_src="' + mediapath + '"' +
			'height="' + height + '" width="' + width + '"' +
			'autostart="1"' +
			'showcontrols="1"' +
			'videoborderwidth="0"' +
			'uimode="none"' +
			'stretchtofit="0"' +
			'border="0"' +
			'type="application/x-mplayer2"' +
			'CurrentPosition="' + mediatime + '"' +
	  '></embed>' +
	'</object>';
	
	
	Div.innerHTML = '';
	
	
	if(isIE)
	{
		Div.innerHTML = playerhtml;
		document.getElementById('MediaPlayer1').controls.currentposition = mediatime;
	}
	else
	{
		var pObject = document.createElement('object');
		pObject.setAttribute('id', 'MediaPlayer1');
		pObject.setAttribute('width', width);
		pObject.setAttribute('height', height);
		pObject.setAttribute('classid', 'CLSID:6BF52A52-394A-11D3-B153-00C04F79FAA6');
		pObject.setAttribute('type', 'application/x-oleobject');
		
		var ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'URL');
		ObjectParam.setAttribute('value', mediapath);
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'ShowControls');
		ObjectParam.setAttribute('value', 'true');
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'VideoBorderWidth');
		ObjectParam.setAttribute('value', '0');
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'AutoStart');
		ObjectParam.setAttribute('value', 'true');
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'EnableContextMenu');
		ObjectParam.setAttribute('value', 'false');
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'EnablePositionControls');
		ObjectParam.setAttribute('value', 'true');
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'stretchToFit');
		ObjectParam.setAttribute('value', 'false');
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'uiMode');
		ObjectParam.setAttribute('value', 'full');
		pObject.appendChild(ObjectParam);
		
		ObjectParam = document.createElement('param');
		ObjectParam.setAttribute('name', 'CurrentPosition');
		ObjectParam.setAttribute('value', mediatime);
		pObject.appendChild(ObjectParam);
		ObjectParam = null
		
		
		var ObjectEmbed = document.createElement('embed');
		ObjectEmbed.setAttribute('src', mediapath);
		ObjectEmbed.setAttribute('mce_src', mediapath);
		ObjectEmbed.setAttribute('width', width);
		ObjectEmbed.setAttribute('height', height);
		ObjectEmbed.setAttribute('autostart', '1');
		ObjectEmbed.setAttribute('showcontrols', '1');
		ObjectEmbed.setAttribute('videoborderwidth', '0');
		ObjectEmbed.setAttribute('uimode', 'none');
		ObjectEmbed.setAttribute('stretchtofit', '0');
		ObjectEmbed.setAttribute('border', '0');
		ObjectEmbed.setAttribute('type', 'application/x-mplayer2');
		ObjectEmbed.setAttribute('CurrentPosition', mediatime);
		pObject.appendChild(ObjectEmbed);
		
		
		
		Div.appendChild(pObject);
	}
}

