/* Функция для добавления файлов со скриптами в документ (позволяет разбивать код на логические файлы) */
/* Параметры:
	src - текущий файл, в котором происходит подключение "Sample.js"
	path - путь к файлу подключения, относительного текущего файла "/library/part-one.js"
*/
function $import(src, path){
	var i, base, scripts = document.getElementsByTagName("script");
	for (i=0; i<scripts.length; i++){if (scripts[i].src.match(src)){ base = scripts[i].src.replace(src, "");break;}}
	document.write("<script src=\"" + base + path + "\"><\/script>");
};

addEvent = function(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
};

/* Установка числового значения в поле */
function setValuetoField(id, value)
{
	var field = document.getElementById(id);
	if (field && value > -1) {field.value = value}
};

/* Преобразование строки вида abcde в строку вида "abcde" */
function quotesStr(str)
{
	return '"' + str + '"';
};

/* Конвертация строки в число, в случае невозможности конвертации возвращает -1 */
function strToInt(str)
{
	var obj;
	obj = parseInt(str);
	if (!isNaN(obj)) {return obj;} else {return -1;}
};

/* Конвертация строки в массив чисел, в случае невозможности конвертации возвращает [] */
function strToIntArray(str)
{
	var obj = [];
	if (str.length > 0)
	{
		obj = str.split(",");
		for (i=0; i<obj.length; i++) {obj[i] = strToInt(obj[i])}
	}
	return obj;
};

// Возвращает либо просто пусть страницы либо функцию, вызывающую открытие страницы в новом окне
function getHref(page, newWindowInAnchor)
{
	if(newWindowInAnchor == true || newWindowInAnchor == "true")
		return "javascript: windowOpen('" + page + "', 950, 600, '');"
	else
		return page;
}

// Возвращает параметр по имени из GET строки
function getParam(paramName)
{   
	var tmp = new Array();      // два вспомагательных 
	var tmp2 = new Array();     // массива 
	var param = new Array(); 
			
	var get = location.search;  // строка GET запроса 
	if(get != '') 
	{ 
		tmp = (get.substr(1)).split('&');   // разделяем переменные 
		for(var i=0; i < tmp.length; i++) 
		{ 
			tmp2 = tmp[i].split('=');       // массив param будет содержать 
			param[tmp2[0]] = tmp2[1];       // пары ключ(имя переменной)->значение 
		}
	}
	
	return param[paramName];
}

/* Открываем новое окно с заданными размерами и передаем в него параметры */
function windowOpen(url, width, height, parameter) 
{
    var www = window.open(url, '_blank', 'resizable=yes,scrollbars=yes,menubar=no,width='+width+',height='+height);
    www.parameter = parameter;
    www.focus();
};

function windowOpenWOParam(url, width, height) 
{
    var www = window.open(url, '_blank', 'resizable=yes,scrollbars=yes,menubar=no,width='+width+',height='+height);
    www.focus();
};

sys = function(){};

sys.$isIe = function() {
        return (navigator.userAgent.toLowerCase().indexOf("msie") != -1 && navigator.userAgent.toLowerCase().indexOf("opera") == -1);
    };
    
sys.$isNetscape7 = function() {
        return (navigator.userAgent.toLowerCase().indexOf("netscape") != -1 && navigator.userAgent.toLowerCase().indexOf("7.") != -1);
    };
    
sys.$isSafari = function() {
        return (navigator.userAgent.toLowerCase().indexOf("khtml") != -1);
    };
    
sys.$isOpera = function() {
        return (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
    };
    
sys.$isMozilla = function() {
        return (navigator.userAgent.toLowerCase().indexOf("gecko") != -1 && navigator.productSub >= 20030210);
    };
    
sys.$isFireFox = function() {
		return /Firefox/i.test(navigator.userAgent);
	};

sys.$isArray = function(obj) {
        return obj instanceof Array;
    };
    
sys.$isObject = function(obj) {
        return (typeof obj == 'object');
    };


// Работа с массивами

// Возвращает true, если value есть в array.
function contains(array, value)
{
	for(var i = 0; i < array.length; i++)
	{
		if(array[i] == value)
			return true;
	}
	return false;
}

// Исключает из массива указанный элемент
function exclude(array, value)
{
	if(array == null || array.length == null)
		return array;

	for(var i = 0; i < array.length; i++)
	{
		var temp1 = array[i];
		var temp2 = value;
		if(array[i] == value)
			array.remove(i);
	}
	
	return array;
}

// Возвращает массив без элементов null
function getArrayWithoutNull(array)
{
	var result = new Array();
	for (var i = 0; i < array.length; i++)
		if (array[i] != null)
			result.push(array[i]);
	return result;
}

// Возвращает true, если массив пустой
function arrayIsEmpty(array)
{
	if (array != null && array.length != null && array.length != 0)
		return false;
	else
		return true;
}

//Управление индикатором загрузки
var gWaitBoxCounter = 0;
ToggleWaitBox = function (state) 
{
	if ($("#WaitingControl") == null)
		return;

	if (state=='show')
		gWaitBoxCounter++;
	else if (state=='hide')
		gWaitBoxCounter--;
	
	if (gWaitBoxCounter > 0)
		$("#WaitingControl:not(:visible)").fadeIn();
	else
		$("#WaitingControl:visible").fadeOut();
}