String.prototype.trim = function () 
{
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
};
Array.prototype.hasValue = function()
{
	for(var i in this)
	{
		if(this[i] == arguments[0])
			return true;
	};
	return false;
};
Array.prototype.implode = function()
{
	var str = '';
	for(var i = 0; i < this.length; i++)
	{
		if(str.length > 0)
			str += arguments[0];
		str += this[i];
	}
	return str;
};

function addOnLoadEventProcessor(func)
{
	if(window.addEventListener)
		window.addEventListener("load", func, false);
	else if (window.attachEvent)
		window.attachEvent("onload", func);
	else
		alert('Your browser doesnt support events processing. Sorry.');
}

function openURL(url, alt, width, height)
{
	var params = "width=" + width + ",height=" + height + ",status=no,toolbar=no,menubar=no,scrollbar=yes";
	PictureWindow = open(url, "_blank", params);

	return false;
};

function move_postform(prevElement)
{
	var parent = document.getElementById(prevElement);
	var node = document.getElementById('postdiv');
	parent.appendChild(node);
}
function addLabel(label)
{
	var str = document.article_add.labels.value;
	if(str.indexOf(label) < 0)
	{
		if(str.length > 0)
			str += (', '+label);
		else
			str = label;

		document.article_add.labels.value = str;
	}
}
function delLabel(label)
{
	var str = document.article_add.labels.value;
	var arr = str.split(',');
	str = '';
	for(i = 0; i < arr.length; i++)
	{
		arr[i] = arr[i].trim();
		if(arr[i] != label)
		{
			if(str.length > 0)
				str += ', '+arr[i];
			else
				str = arr[i];
		}
	}
	document.article_add.labels.value = str;
}

function mySetForm(action, id)
{
	var form = eval("document._list_form");

	form._act.value = action;
	form._id.value = id;

	var url = window.location.href;

	// remove 'add' and 'edit' and 'del'
	var del_reg2 = new RegExp("\/add", "i");
	url = url.replace(del_reg2, '');

	var del_reg3 = new RegExp("\/edit/[0-9]+", "i");
	url = url.replace(del_reg3, '');

	var del_reg4 = new RegExp("\/del/[0-9]+", "i");
	url = url.replace(del_reg4, '');

	form.action = url;
	form.submit();
};

function mySetFormSimple(action, id)
{
	var form = eval("document._list_form");

	form._act.value = action;
	form._id.value = id;

	form.submit();
};
function mySetFormSimpleCategorized(action, id, cat)
{
	var form = eval("document._list_form");

	form._act.value = action;
	form._id.value = id;
	form._cat.value = cat;

	form.submit();
};

function addFile(prefix, counter)
{
	counter++;
	var elem = document.getElementById(prefix+counter);
	if(elem != null)
		elem.style.display = '';
}

function isOptionChecked(opt)
{
	if(opt.length > 0)
	{
		for(var i = 0; i < opt.length; i++) 
		{

			if(opt[i].checked)
				return true;
		}
	}
	else
	{
		if(opt.checked)
			return true;
	}
	return false;
}

function colorizeRow(row, oldClass, newClass)
{
	for(var j = 0; j < row.childNodes.length; j++)
		if(row.childNodes[j].className == oldClass)
			row.childNodes[j].className = newClass;
}
function checkAndColorizeAll(opt, checked, oldClass, newClass)
{
	if(opt.length > 0)
	{
		for(var i = 0; i < opt.length; i++) 
		{
			opt[i].checked = checked;
			colorizeRow(opt[i].parentNode.parentNode, oldClass, newClass);
		}
	}
	else
	{
		opt.checked = checked;
		colorizeRow(opt.parentNode.parentNode, oldClass, newClass);
	}
}

function checkAll(opt, val)
{
	if(opt.length > 0)
	{
		for(i = 0; i < opt.length; i++) 
			opt[i].checked = val;
	}
	else
	{
		opt.checked = val;
	}
}
function processAllBody(opt, act)
{
	var sel = '';
	if(opt.length > 0)
	{
		for(i = 0; i < opt.length; i++) 
		{
			if(opt[i].checked)
			{
				if(sel.length > 0)
					sel += ', ';
				sel += opt[i].id;
			}
		}
	}
	else
	{
		sel = opt.id;
	}
	return sel;
}
function processAll(opt, act)
{
	return mySetForm(act, processAllBody(opt, act));
}
function processAllSimple(opt, act)
{
	return mySetFormSimple(act, processAllBody(opt, act));
}

function myModifyURL2(prefix, value, del_prefix)
{
	var url = window.location.href;

	url = url.replace(/([\w\/]+)\/$/, '$1');	// remove slash from end of URL

	var reg = new RegExp(prefix+"[\\w]+", "i");
	var url2 = url.replace(reg, prefix+"_"+value);

	if(url == url2)	// if no replacement occured, just add parameter to URL
		url += '/'+prefix+"_"+value;
	else
		url = url2;

	if(del_prefix != '')
	{
		var del_reg = new RegExp("\/"+del_prefix+"[\\w]+", "i");
		url = url.replace(del_reg, '');
	}

	// remove 'add' and 'edit' 
	var del_reg2 = new RegExp("\/add", "i");
	url = url.replace(del_reg2, '');

	var del_reg3 = new RegExp("\/edit/[0-9]+", "i");
	url = url.replace(del_reg3, '');

	window.location.href = url;
};
function myModifyURL(prefix, value, del_prefix)
{
	var url = window.location.href;

	url = url.replace(/([\w\/]+)\/$/, '$1');	// remove slash from end of URL

	var reg = new RegExp(prefix+"[\\w]+", "i");
	var url2 = url.replace(reg, prefix+"_"+value);

	if(url == url2)	// if no replacement occured, just add parameter to URL
		url += '/'+prefix+"_"+value;
	else
		url = url2;

	if(del_prefix != '')
	{
		var del_reg = new RegExp("\/"+del_prefix+"[\\w]+", "i");
		url = url.replace(del_reg, '');
	}

	// remove 'add' and 'edit' 
	var del_reg2 = new RegExp("\/add", "i");
	url = url.replace(del_reg2, '');

	var del_reg3 = new RegExp("\/edit/[0-9]+", "i");
	url = url.replace(del_reg3, '');

	window.location.href = url;
};
function myModifyURLwoDeleting(prefix, value, del_prefix)
{
	var url = window.location.href;

	url = url.replace(/([\w\/]+)\/$/, '$1');	// remove slash from end of URL

	var reg = new RegExp(prefix+"[\\w]+", "i");
	var url2 = url.replace(reg, prefix+"_"+value);

	if(url == url2)	// if no replacement occured, just add parameter to URL
		url += '/'+prefix+"_"+value;
	else
		url = url2;

	if(del_prefix != '')
	{
		var del_reg = new RegExp("\/"+del_prefix+"[\\w]+", "i");
		url = url.replace(del_reg, '');
	}

	window.location.href = url;
};
function checkDistrFilesAddForm()
{
	if(document.file_add.file.value.length <= 0)		{ alert("Не выбран файл документа"); return false; }
}
function checkUserAddForm()
{
	if(document.user_add.login.value.length <= 0)		{ alert("Не заполнено поле 'Логин'"); return false; }
	if(document.user_add.pass.value.length <= 0)		{ alert("Не заполнено поле 'Пароль'"); return false; }
	if(document.user_add.pass2.value.length <= 0)		{ alert("Не заполнено поле 'Введите пароль и второй раз'"); return false; }
	if(document.user_add.surname.value.length <= 0)		{ alert("Не заполнено поле 'Фамилия'"); return false; }
	if(document.user_add.name.value.length <= 0)		{ alert("Не заполнено поле 'Имя'"); return false; }
	return true;
}
function checkCitiesAddForm()
{
	if(document.city_add.name.value.length <= 0)		{ alert("Не заполнено поле 'Название'"); return false; }
	if(document.city_add.x.value.length <= 0)			{ alert("Не заполнено поле 'X'"); return false; }
	if(document.city_add.y.value.length <= 0)			{ alert("Не заполнено поле 'Y'"); return false; }
	return true;
}
function checkNewsAddForm()
{
	if(document.news_add.news_header.value.length <= 0)	{ alert("Не заполнено поле 'Заголовок'"); return false; }
	if(document.news_add.news_body.value.length <= 0)	{ alert("Не заполнено поле 'Текст'"); return false; }
	return true;
}
function checkDistrNewsAddForm()
{
	if(document.news_add.header.value.length <= 0)		{ alert("Не заполнено поле 'Заголовок'"); return false; }
	if(document.news_add.body.value.length <= 0)		{ alert("Не заполнено поле 'Текст'"); return false; }
	return true;
}
function checkAdvAddForm()
{
	if(document.adv_add.name.value.length <= 0)			{ alert("Не заполнено поле 'Название'"); return false; }
	if(document.adv_add.url.value.length <= 0)			{ alert("Не заполнено поле 'Ссылка'"); return false; }
	if(document.adv_add.text.value.length <= 0)			{ alert("Не заполнено поле 'Текст'"); return false; }
	return true;
}
function checkJobsAddForm()
{
	if(document.jobs_add.name.value.length <= 0)		{ alert("Не заполнено поле 'Название'"); return false; }
	if(document.jobs_add.descr.value.length <= 0)		{ alert("Не заполнено поле 'Описание'"); return false; }
	return true;
}
function checkStaticAddForm()
{
	if(document.static_add.name.value.length <= 0)		{ alert("Не заполнено поле 'Название'"); return false; }
	if(document.static_add.url.value.length <= 0)		{ alert("Не заполнено поле 'URL'"); return false; }
	var sel = document.static_add.parent;
	if(sel.options[sel.selectedIndex].value < 0)		{ alert("Не заполнено поле 'В разделе'"); return false; }
	return true;
}

function getPosition(obj) 
{
	var x = 0, y = 0;
	while(obj) 
	{
		x += obj.offsetLeft;
		y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return {x: x, y:y};
};
function myOpenCalendar(form_name, field_name, cal_img)
{
	dateField = eval("document." + form_name + "." + field_name);
	var c = getPosition(document.getElementById(cal_img));
	var win = window.open(base_href+"include/calendar.php", "calendar", "width=200,height=200,left="+c["x"]+",top="+c["y"]+",status=no,resizable=no");
};
function myOpenToolWnd(form_name, field_name, anchor_element_id, script, width, height)
{
	dateForm = eval("document." + form_name);
	dateField = eval("document." + form_name + "." + field_name);
	var c = getPosition(document.getElementById(anchor_element_id));
	var win = window.open(base_href+script, "tool", "width="+width+",height="+height+",left="+c["x"]+",top="+c["y"]+",status=no,resizable=no");
};
function tag(elem, tagLeft, tagRight)
{
	document.getElementById(elem).focus();
	document.selection.createRange().text = tagLeft+document.selection.createRange().text+tagRight;
}

function createCookie(name,value,days) 
{
	if (days) 
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) 
	{
		var c = ca[i];
		while (c.charAt(0)==' ') 
			c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) 
			return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) 
{
	createCookie(name,"",-1);
}

function switchForumTreePlain()
{
	// 0 - plain
	// 1 - tree
	// 0 is default
	// on first switch default 0 will be changed to 1

	var name = base_cookie+'[forumview]';
	var val = readCookie(name);
	if(val != null)
	{
		eraseCookie(name);
		createCookie(name, 1-val, 365);
	}
	else
	{
		createCookie(name, 1, 365);
	}

	document.location.reload();
}


