
function getParentTable(obj){
	_parent = obj.parentNode;
	if(_parent.tagName.toLowerCase() == "table") return _parent;
	else return getParentTable(_parent);
}

function findParent(obj, tag) {
	var parent = obj.parentNode;
	while (parent.nodeName != tag && parent.nodeName != 'HTML') parent = parent.parentNode;
	return parent.nodeName == 'HTML' ? false : parent;
}

var __cachedElements = {};
function getElement(id, cont) {
	if ( __cachedElements[id] != undefined ) return __cachedElements[id];
	cont = cont || document;
	var element = cont.getElementById(id);
	if (element == undefined) return false;
	__cachedElements[id] = element;
	return element;
}


function ActSubmit_btn(site, id, status ) {
$.ajax({type:"GET", url:"/adm/"+ site +"", data:"task=activity&id="+id+"&status="+status});
}

function checkAll(_elm, _checked, _name) {
	
	if (_elm == '') {
		var _elms = document.getElementsByTagName('input');
	} else {
		var _table = getParentTable(_elm);
		var _elms = _table.getElementsByTagName('input');
	}
	
	for (var i=0; i<_elms.length; i++) {
		if (_elms[i].type == 'checkbox' && _elms[i].id == _name && !_elms[i].disabled && _elms[i].value)
			_elms[i].checked = _checked;
	}
}

function makeSumbit(_this, task) {
	var form = findParent(_this, 'FORM');
	if (!form) return false;
	
	if (task != undefined)
		form.task.value = task;

	Error.reset();
	Error.check();
	
	if (Error._errors.length == 0) {
		form.submit();
	}
}

function makeRequest(_this) {
	
	if(confirm("Вы действительно хотите удалить отмеченные правила?"))
	makeSumbit(_this);
}

function checkNodeLinkAndSumbit(_this) {
	
	var form = findParent(_this, 'FORM');
	if (!form) return false;
	
	Error.reset();
	Error.check();
	
	if (Error._errors.length == 0) {
		form.submit();
	}
}

function setPosition(_this) {
	var str = $(_this).html();
	str = str.replace('&nbsp;', ' ');
	str = str.replace('&#160;', ' ');
	str = str.substr(0,18);
	
	$("#link_id").attr("value", $(_this).attr("id"));
	$("#link_name").text(str);
	
	tb_remove(); return false;
}

function checkAndSumbit(_this) {
	var form = findParent(_this, 'FORM');
	if (!form) return false;
	
	Error.reset();
	Error.check($(form).attr("name"));
	
	if (Error._errors.length == 0) {
		form.submit();
	}
}

function checkContentAndSubmit(_this) {
	
	var form = findParent(_this, 'FORM');
	if (!form) return false;
	
	Error.reset();
	Error.check();
	
	if (form.content_id.value == 0) {
		if (form.action_id.value == 2) {
			
			if (!/^[0-9a-zA-Z-_]+$/.test(form.file.value)) {
				Error.add(form.file, 'Имя файла имеет неправильный формат');
			}

			$.ajax({
				type: "GET",
		  		url: "/adm/content/",
		  		data: "task=check&dir="+form.dir.value+"&type_id="+form.type_id.value+"&file="+form.file.value,
		  		async: false,
				success:
					function(data) {
						if (data > 0) Error.add(form.file, 'Файл с таким именем и директорией существует. Введите другое имя файла');
					}
		 	});
		} else {
			if (form.content_file.value.length < 1) {
				Error.add(form.content_file, 'Поле должно быть заполнено');
			}
		}
	 
	} else {
		if (form.action_id.value == 2) {
			
			if (!/^[0-9a-zA-Z-_]+$/.test(form.file.value)) {
				Error.add(form.file, 'Имя файла имеет неправильный формат');
			}

			$.ajax({
				type: "GET",
		  		url: "/adm/content/",
		  		data: "task=check&dir="+form.dir.value+"&type_id="+form.type_id.value+"&file="+form.file.value,
		  		async: false,
				success:
					function(data) {
						if (data > 0) Error.add(form.file, 'Файл с таким именем и директорией существует. Введите другое имя файла');
					}
		 	});
		}
	}
	
	if (Error._errors.length == 0) {
		form.submit();
	}
}

function checkImageAndSubmit(_this) {
	
	var form = findParent(_this, 'FORM');
	if (!form) return false;
	
	Error.reset();
	Error.check();
	
	if (form.image_id.value == 0) {
		if (form.img_file.value.length < 1) {
			Error.add(form.img_file, 'Поле должно быть заполнено');
		}
	 
	} else {
		if (form.action_id.value == 2) {
			
			if (!/^[0-9a-zA-Z-_]+$/.test(form.file.value)) {
				Error.add(form.file, 'Имя файла имеет неправильный формат');
			}

			$.ajax({
				type: "GET",
		  		url: "/adm/images/",
		  		data: "task=check&dir="+form.dir.value+"&image_id="+form.image_id.value+"&file="+form.file.value,
		  		async: false,
				success:
					function(data) {
						if (data > 0) Error.add(form.file, 'Файл с таким именем и директорией существует. Введите другое имя файла');
					}
		 	});
		}
	}
	
	if (Error._errors.length == 0) {
		form.submit();
	}
}

function checkClientAndSumbit(_this) {
	
	var form = findParent(_this, 'FORM');
	if (!form) return false;
	
	Error.reset();
	Error.check();
	
	if (form.user_id.value > 0) {
		if(form.pass.value.length > 0 && form.confirm.value.length == 0) {
			Error.add(form.confirm, 'Поле должно быть заполнено');
		} else if (form.pass.value.length == 0 && form.confirm.value.length > 0) {
			Error.add(form.pass, 'Поле должно быть заполнено');
		} else if(form.pass.value.length > 0 && form.confirm.value.length > 0 && form.pass.value != form.confirm.value) {
			Error.add(form.pass, 'Значение пароля и его подтверждения должны совпадать');
			Error.add(form.confirm, 'Значение пароля и его подтверждения должны совпадать');
		}
	}
	
	if (!form.user_id.value || form.user_id.value == 0) {
		if (form.pass.value.length == 0) {
			Error.add(form.pass, 'Поле должно быть заполнено');
		}
		if (form.confirm.value.length == 0) {
			Error.add(form.confirm, 'Поле должно быть заполнено');
		}
		if((form.pass.value.length > 0 && form.confirm.value.length > 0 && form.pass.value != form.confirm.value)) {
			Error.add(form.pass, 'Значение пароля и его подтверждения должны совпадать');
			Error.add(form.confirm, 'Значение пароля и его подтверждения должны совпадать');
		}
	}
	
	if (/^[0-9a-zA-Z]+$/.test(form.nik.value)) {
		$.ajax({
			type: "GET",
	  		url: "/adm/clients/",
	  		data: "task=check&uname="+form.nik.value+"&user_id="+form.user_id.value,
	  		async: false,
			success:
				function(data) {
					if (data > 0) Error.add(form.nik, 'Значение логина не уникально. Введите другое значение');
				}
	 	});
	}
	
	if (Error._errors.length == 0) {
		form.submit();
	}
}

var Error = {
	_errors: [],

	check: function() {
		$("*[@required = 1]").each(function() {
			switch ($(this).attr("reqtype")) {
				case "string":
					if ($(this).val().length < 1) {
						Error.add($(this)[0], 'Поле должно быть заполнено');
					}
				break;
				case "text":
					if ($(this).val().length < 1) {
						Error.add($(this)[0], 'Поле должно быть заполнено', 'DIV');
					}
				break;
				case "uname":
					if (!/^[0-9a-zA-Z]+$/.test($(this).val())) {
						Error.add($(this)[0], 'Значение поля должно быть строкой, содержащей только цифры или латинские буквы');
					}
				break;
				case "email":
					if (!/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/.test($(this).val())) {
						Error.add($(this)[0], 'Значение поля должно иметь формат address@domain.ru');
					}
				break;
				case "int":
					if ($(this).val() <= 0) {
						Error.add($(this)[0], 'Поле должно быть заполнено');
					}
				break;
				case "pattern":
					if ($(this).val().length < 1) {
						Error.add($(this)[0], 'Поле должно быть заполнено');
					}
				break;
				case "file":
					if ($(this).val().length > 0) {
						if (!/^[0-9a-zA-Z-_]+$/.test($(this).val())) {
							Error.add($(this)[0], 'Имя файла имеет неправильный формат');
						}
					}
				case "dir":
					if ($(this).val().length > 0) {
						if (!/^[0-9a-zA-Z-_\/]+$/.test($(this).val())) {
							Error.add($(this)[0], 'Имя директории имеет неправильный формат');
						}
					}
				break;
			}
		});
	},
	
	reset: function() {
		if (Error._errors.length) {
			$("td.warning").each(function() {
				$(this).removeClass("warning");
				$(this).attr("title", "");
			});
		}
		Error._errors = [];
	},
	
	add: function(obj, title, tag) {
		if (tag == undefined) tag = 'TD';
		
		Error._errors.push({'obj': obj, 'title': title});
		Error.show({'obj': obj, 'title': title}, tag);
	},
	
	show: function(error, tag) {
		if(findParent(error['obj'], tag)) {
			$(findParent(error['obj'], tag)).addClass("warning");
			$(findParent(error['obj'], tag)).attr("title", error['title']);
		}
	}
}

var lettersList = {
	
	pid: null,
	pattern: null,
	
	init: function() {
		lettersList.pid		= $("input:hidden[@name = 'pid']").val();
		lettersList.pattern	= $("input:hidden[@name = 'parent_pattern']").val();
		
		$("a.letters").bind("click", function() {
			lettersList.reset();
			lettersList.set(this);
			lettersList.refresh($(this).attr("letter"));
			return false;
		});
	},
	
	reset: function() {
		$("li.current").removeClass("current");
	},
	
	set: function(element) {
		$(findParent(element, 'LI')).addClass("current");
	},
	
	refresh: function(letter) {
		if (letter == undefined)
			letter = "%";
			
		$.ajax({
			type: "GET",
	  		url: "",
	  		data: "task=add&pid="+lettersList.pid+"&pattern="+lettersList.pattern+"&letter="+letter,
	  		async: false,
			success:
				function(data) {
					$("div.window-container-table").html(data);
				}
	 	});
	}
}

function fillClubsList(season_id, club_id) {
	
	if (!season_id)
		season_id = $("#seasons").val();
		
	var clubs	= document.getElementById("clubs");
	clubs.length = 0;
	
	var length = 0;
	for(i=0; i<links[season_id].length; i++) {
		length = clubs.options.length;
		clubs.options[length] = new Option(links[season_id][i].name,links[season_id][i].id);
		
		if (club_id && links[season_id][i].id == club_id)
			clubs.selectedIndex = length;
	}
}

function addSeason(_this) {
	
	$.ajax({
		type:	"GET",
		url:	$("#curURL").val(),
		data:	"task=add-season"
	});
	 
	document.location.href= $("#curURL").val();
}

function chooseProfiles(name, id, pid) {
	
	var club_id		= $("select[@name = '"+name+"']").attr("value");
	
	if ($("select[@name = 'profile_id']").length) {
		var profile_id	= $("select[@name = 'profile_id']")[0];
		profile_id.length = 0;
		
		var length = 0;
		for(i=0; i<profiles.length; i++) {
			if (profiles[i].club_id == club_id) {
				length = profile_id.options.length;
				profile_id.options[length] = new Option(profiles[i].name,profiles[i].id);
				
				if (club_id == id)
					profile_id.selectedIndex = length;
			}
		}
	}
	
	if ($("select[@name = 'assistant1_id']").length) {
		var assistant1_id	= $("select[@name = 'assistant1_id']")[0];
		assistant1_id.length = 0;
	
		var length = 0;
		assistant1_id.options[length] = new Option('Нет',0);
		for(i=0; i<profiles.length; i++) {
			if (profiles[i].club_id == club_id) {
				length = assistant1_id.options.length;
				assistant1_id.options[length] = new Option(profiles[i].name,profiles[i].id);
				
				if (club_id == id)
					assistant1_id.selectedIndex = length;
			}
		}
	}
	
	if ($("select[@name = 'assistant2_id']").length) {
		var assistant2_id	= $("select[@name = 'assistant2_id']")[0];
		assistant2_id.length = 0;
	
		var length = 0;
		assistant2_id.options[length] = new Option('Нет',0);
		for(i=0; i<profiles.length; i++) {
			if (profiles[i].club_id == club_id) {
				length = assistant2_id.options.length;
				assistant2_id.options[length] = new Option(profiles[i].name,profiles[i].id);
				
				if (club_id == id)
					assistant2_id.selectedIndex = length;
			}
		}
	}
	
	if ($("select[@name = 'goalkeeper_id']").length) {
		var goalkeeper_id	= $("select[@name = 'goalkeeper_id']")[0];
		goalkeeper_id.length = 0;
	
		var length = 0;
		goalkeeper_id.options[length] = new Option('Нет',0);
		for(i=0; i<profiles.length; i++) {
			if (profiles[i].club_id != club_id && profiles[i].pos_id == 3) {
				length = goalkeeper_id.options.length;
				goalkeeper_id.options[length] = new Option(profiles[i].name,profiles[i].id);
				
				if (club_id == id)
					goalkeeper_id.selectedIndex = length;
			}
		}
	}
	
	if ($("select[@name = 'goalkeeper1_id'],select[@name = 'goalkeeper2_id']").length) {
		
		$("select[@name = 'goalkeeper1_id'],select[@name = 'goalkeeper2_id']").each(function() {
			this.length = 0;
		
			var length = 0;
			this.options[length] = new Option('Нет',0);
			for(i=0; i<profiles.length; i++) {
				if (profiles[i].club_id == club_id && profiles[i].pos_id == 3) {
					length = this.options.length;
					this.options[length] = new Option(profiles[i].name,profiles[i].id);
					
					if (club_id == id)
						this.selectedIndex = length;
				}
			}
		});
	}
}