function e(e)
{
	return document.getElementById(e);
}
function elements_set_value(object,value,param,name)
{
	if(!value)
		value={value:""};
	if(!param)
		param={type:"text"};
	if(!name)
		name="INPUT";
	var set=true;
	if(object.tagName!=name)
		set=false;
	if(set)
		for(var k in param)
			if(k&&(object.getAttribute(k)!=param[k])){
				set=false;
				break;
			}
	if(set)
		for(var k in value)
			object[k]=value[k];
	else
		for(var k=0;k<object.childNodes.length;k++)
			elements_set_value(object.childNodes.item(k),value,param,name);
}
function elements_get_value(object,result,value,param,name)
{
	if(!value)
		value={value:"value"};
	if(!param)
		param={type:"text"};
	if(!name)
		name="INPUT";
	var set=true;
	if(object.tagName!=name)
		set=false;
	if(set){
		for(var k in param)
			if((object[k]!=param[k])&&(object.getAttribute(k)!=param[k])){
				set=false;
				break;
			}
	}
	if(set){
		var res={};
		for(var k in value){
			if(object[value[k]])
				res[k]=object[value[k]];
			else
				res[k]=object.getAttribute(value[k]);
		}
		result.push(res);
	}
	else
		for(var k=0;k<object.childNodes.length;k++)
			elements_get_value(object.childNodes.item(k),result,value,param,name);	
}
function get_offset(obj)
{
	var top=0;
	var left=0;
	while(obj.tagName!="BODY"){
		if(obj.tagName!="TD")
			top+=obj.offsetTop;
		left+=obj.offsetLeft;
		obj=obj.parentNode;
	}
	return {top:top,left:left};
}
/*
 * url - путь
 * checkbox - group нужных checkbox
 * request - подтверждение
 * ajax - id в который вставить
 * win - в окне
 * post - запрос POST только для окна
 */
var url_open_win=new Array();
var div_win=null;
$(function() {
	div_win=$("<div/>");
	div_win.dialog({
		autoOpen: false,
		modal: true
	});
});
function url(url,checkbox,request,ajax,win,post)
{
	var count=0;
	if(checkbox&&checkbox["id"]&&checkbox["group"]){
		$('input[type=\'checkbox\'][group=\''+checkbox["group"]+'\'][checked=true]',$('#'+checkbox["id"])).each(function(){
			url+=this.getAttribute('id')+'/';
			count++;
		});
		if(count==0)
			return;
	}
	if(request)
		if(!confirm(request.replace(/%n%/gi,count)))
			return;
	if(ajax){
		$.ajax({url:'/?ajax='+url,success:function(res){$('#'+ajax).html(res);}});
		return;
	}
	if(!win)
		for(var i=0;i<url_open_win.length;i++)
			if(url.indexOf(url_open_win[i]["url"])!=-1){
				win=true;
				break;
			}
	if(win){
		$.ajax({url:'/?ajax='+url,
			type:(post?"POST":"GET"),
			data:post,
			success:function(res){
				div_win.html(res);
				div_win.dialog('open');
			}
		});
		return;
	}
	window.location=url;
}

function test_string(preg,value)
{
	var reg=new RegExp("^"+preg+"$","i");
	return reg.test(value);
}
function test_all()
{
	var ok=true;
	var res=new Array();
	elements_get_value(document.getElementById("field"),res,{id:"id",value:"value",preg:"preg",message:"message"},{type:"text",mask:"1"},"INPUT");
	for(var i=0;i<res.length;i++){
		if(!test_string(res[i]["preg"],res[i]["value"])){
			alert(res[i]["message"]);
			ok=false;
		}
	}
	if(ok)
		$('form').submit();
}

function hide_element_class()
{
	this.list=new Array();
	this.add=function(fun)
	{
		this.list.push(fun);
	}
	this.clean=function()
	{
		for(var i=0;i<this.list.length;i++)
			this.list[i]();
		this.list=new Array();
	}
}
var hide_element=new hide_element_class();
$(document).ready(function(){
	$(document).bind("click",function(){
		hide_element.clean();
	});
	$(document).ajaxStart(function(){
		$("#ajax_loader").show();
	});
	$(document).ajaxStop(function(){
		$("#ajax_loader").hide();
	});
});
