window.onload = function()
{
	setupEscape();//новый escape, понимающий русский язык
}

function setupEscape()
{
	// Инициализируем таблицу перевода
	var trans = [];
	for (var i = 0x410; i <= 0x44F; i++) trans[i] = i - 0x350; // А-Яа-я
	trans[0x401] = 0xA8;    // Ё
	trans[0x451] = 0xB8;    // ё

	// Сохраняем стандартную функцию escape()
	var escapeOrig = window.escape;

	// Переопределяем функцию escape()
	window.escape = function(str) {
		var ret = [];
		// Составляем массив кодов символов, попутно переводим кириллицу
		for (var i = 0; i < str.length; i++) {
			var n = str.charCodeAt(i);
			if (typeof trans[n] != 'undefined')
			n = trans[n];
			if (n <= 0xFF)
			ret.push(n);
		}
		return escapeOrig(String.fromCharCode.apply(null, ret));
	}
}

var prgbar = new Image(150, 13);
prgbar.src = "i/progbar.gif";

function send_class_form(myform, _els)
{
	var array_els = [];
	_els = _els.substr(0, _els.length - 1);
	array_els = _els.split(",")
	if(myform.elements.add_class_name.value.length > 0)
	{
		var i = 0;
		while(i != array_els.length)
		{
			if(myform.elements.add_class_name.value == array_els[i])
			{
				alert('Класс "' + myform.elements.add_class_name.value + '" уже существует!' + "\nПожалуйста, выберите другое имя!");
				return false;
			}
			i++;
		}
		
		myform.subm.disabled = true;
		myform.subm.value = 'Подождите...';
		requestData("object=add_class", "add_class_name=" + escape(myform.elements.add_class_name.value), "parallel=" + myform.elements.parallel.value, "school=" + myform.elements.school.value);
		return false;
	}
	else
	{
		alert('Для добавления нового класса введите его имя!');
		return false;
	}
}

function send_parallel_form(myform, _els)
{
	var array_els = [];
	_els = _els.substr(0, _els.length - 1);
	array_els = _els.split(",");
	if(myform.elements.add_parallel_name.value.length > 0)
	{
		var i = 0;
		while(i != array_els.length)
		{
			if(myform.elements.add_parallel_name.value == array_els[i])
			{
				alert('Параллель "' + myform.elements.add_parallel_name.value + '" уже существует!' + "\nПожалуйста, выберите другое имя!");
				return false;
			}
			i++;
		}
		
		myform.subm.disabled = true;
		myform.subm.value = 'Подождите...';
		requestData("object=add_class", "school=" + myform.elements.school.value + "", "add_parallel_name=" + escape(myform.elements.add_parallel_name.value) + "", "new_parallel=1");
		return false;
	}
	else
	{
		alert('Для добавления новой параллели введите ее имя!');
		return false;
	}
}

function check_update_form(myform, class_id)
{
	var els = myform.elements;
	var i = 0;
	var return_message = '';
	var args = 'object=add_pupil,mode=save,class_id=' + class_id + ',';
	
	
	//перебираем все элементы, чтобы выяснить где что ;)
	i = 0;
	while(i != els.length)
	{
		if(els[i].type == "text")
		{
			args += els[i].name + '=' + window.escape(els[i].value) + ',';
			if(els[i].value.length == 0)
			{
				alert('Ошибка! Одно из полей с именами учеников не заполнено!');
				return false;
			}
		}
		
		if(els[i].type == "checkbox")
		{
			if(els[i].checked)
			{
				args += els[i].name + '=' + els[i].value + ',';
				var j = 0;
				while(j != els.length)
				{
					if(els[j].name == els[i].value)
					{
						return_message += "Ученик\n" + els[j].value + "\nбудет удален из базы!\n\n";
					}
					j++;
				}
			}
		}
		
		if(els[i].type == "select" || els[i].type.indexOf("select") != -1)
		{
			args += els[i].name + '=' + els[i].options[els[i].selectedIndex].value + ',';
			if(!els[i].disabled && els[i].selectedIndex != 0)
			{
				a = els[i].name.split('_');
				j = 0;
				while(j != els.length)
				{
					if(els[j].type == "text" && els[j].name == a[1])
					{
						//return_message += "Ученик " + els[j].value + " будет переведен в другой класс!\n";
						return_message += "Ученик\n" + els[j].value + "\nбудет переведен в другой класс!\n\n";
					}
					j++;
				}
			}
		}
		
		i++;
	}
	return_message += "Вы подтверждаете вносимые изменения???\n\n";
	if(confirm(return_message))
	{
		myform.subm.disabled = true;
		myform.subm.value = 'Подождите...';
		args = args.substr(0, args.length - 1);
		requestDataString(args);
		return false;
	}
	else return false;
}

function send_parents_view_form(start_date, finish_date)
{
	var args = 'object=index,';
	args += document.getElementById(start_date).name + '=' + document.getElementById(start_date).value + ',';
	args += document.getElementById(finish_date).name + '=' + document.getElementById(finish_date).value;
	requestDataString(args);
	return false;
}

function send_dir_view_form(start_date, finish_date, pupil_id)
{
	var args = 'object=dir_view_pupil_marks,';
	args += document.getElementById(start_date).name + '=' + document.getElementById(start_date).value + ',';
	args += document.getElementById(finish_date).name + '=' + document.getElementById(finish_date).value + ',';
	args += 'pupil_id=' + pupil_id
	requestDataString(args);
	return false;
}

function rem_par(parallel, school)
{
	if(confirm("Данная параллель будет удалена!\nПри наличии в ней классов, данные всех учеников этих классов будут удалены!\nВы уверены?"))
	{
		requestData('object=add_class', "rem_par=" + parallel, "school=" + school);
	}
}

function already_created(the_array, new_el)
{
	the_array[ the_array.length ] = new_el;
}

function check_rec_marks_form(the_form)
{
    var els = the_form.elements;
    var has_marks = false;
	var has_warns = false;
	var has_date = false;
    for(i=0; i<els.length; i++)
    {
        if( (els[i].type == "select" || els[i].type.indexOf("select") != -1) && els[i].name != "form_subject")
        {
			var current_item = els[i].selectedIndex;
			if(els[i].options[current_item].value != '0')
			{
				has_marks = true;
				break;
			}
		}
		
		else if( els[i].type != -1 )
		{
			has_warns = true;
			break;
		}
		
		else if(els[i].name == "date_completion_public")
		{
			if(els[i].value.length > 1)
			{
				has_date = true;
			}
			else
			{
				alert('Ошибка! Не указана дата!');
				return false;
			}
		}
    }
	
	if(has_marks || has_warns)
	{
		the_form.gogogo.disabled = true;
		the_form.gogogo.value = 'Подождите...';
		var string = constructArgumentsString(the_form);
		requestDataString('object=class,curr_class=' + the_form.curr_class.value + ',curr_school=' + the_form.curr_school.value + ',date_completion_public=' + the_form.date_completion_public.value + ',form_subject=' + the_form.form_subject.options[the_form.form_subject.selectedIndex].value + ',' + string);
		return false;
	}
	else
	{
		alert('Ошибка! Не выставлено НИ ОДНОЙ оценки!');
		return false;
	}
}

function check_add_form(myform, class_id)
{
	var args = 'object=add_pupil,class_id=' + class_id + ','
	var txtarea = myform.elements.new_pupils;
	if(txtarea.value.length == 0)
	{
		alert('Ошибка! Текстовое поле пустое!');
		return false;
	}
	else
	{
		myform.subm.disabled = true;
		myform.subm.value = 'Подождите...';
		var targs = escape(txtarea.value).split('%0A');
		var str = 'new_pupils=';
		for(i=0; i<targs.length; i++){str += targs[i] + '::';}
		str = str.substr(0,str.length - 2);
		args += str;
		requestDataString(args);
		return false;
	}
}

function send_full_info(the_form, class_id)
{
	var els = the_form.elements;
	var str = 'object=admin_view_class,mode=submit,class_id=' + class_id + ',';
	for(i=0; i<els.length; i++)
	{
		str += els[i].name + '=' + escape(els[i].value) + ',';
	}
	str = str.substr(0, str.length - 1);
	requestDataString(str);
	return false;
}

function create_new_school(the_form)
{
	var els = the_form.elements;
	var str = 'object=index,mode=create,';
	var errors = false;
	for(i=0; i<els.length; i++)
	{
		str += els[i].name + '=' + escape(els[i].value) + ',';
		if(els[i].value.length < 1){alert('Не все поля заполнены!');errors = true;break;}
	}
	if(!errors)
	{
		str = str.substr(0, str.length - 1);
		requestDataString(str);
		return false;
	}
	else
	{
		return false;
	}
}

function constructArgumentsString(the_form)
{
	var els = the_form.elements;
	var str = '';
	for(i=0; i < els.length; i++)
    {
        if( (els[i].type == "select" || els[i].type.indexOf("select") != -1) && els[i].name != "form_subject")
		{
			var current_item = els[i].selectedIndex;
			str += els[i].name + '=' + els[i].options[current_item].value + ',';
		}
		
		if( els[i].name.indexOf("warn") != -1 || els[i].name == "all_message" )
		{
			str += els[i].name + '=' + escape(els[i].value) + ',';
		}
	}
	str = str.substr(0, str.length - 1);
	return str;
}

function go(element, class_id, date)
{
	var subject = element.options[element.selectedIndex].value;	
	document.send_marks.gogogo.disabled = true;
	document.send_marks.gogogo.value = 'Подождите...';
	
	requestData('object=class', 'subject=' + subject, 'node_id=' + class_id, 'date=' + date);
}

function quick_go(element, date)
{
	if(element.options[element.selectedIndex].value != '-1')
	{
		var class_id = element.options[element.selectedIndex].value;
		document.send_marks.gogogo.disabled = true;
		document.send_marks.gogogo.value = 'Подождите...';
		
		requestData('object=class', 'node_id=' + class_id, 'date=' + date);
	}
	else
	{
		return false;
	}
}

function go_date_onchange()
{
	var subject = document.send_marks.form_subject.options[document.send_marks.form_subject.selectedIndex].value;
	var class_id = document.send_marks.curr_class.value;
	var date = document.send_marks.date_completion_public.value;
	
	document.send_marks.gogogo.disabled = true;
	document.send_marks.gogogo.value = 'Подождите...';
	requestData('object=class', 'subject=' + subject, 'node_id=' + class_id, 'date=' + date);
}

function createCalendar(date, batona, false_button, time_format)
{
	document.getElementById(false_button).style.display = 'none';	
	document.getElementById(batona).style.display = 'inline';
	
	Calendar.setup({
		inputField	: date,
		button		: batona,
		timeFormat	: '24',
		ifFormat	: time_format,
		firstDay	: 1,
		showsTime	: false
	});
	
	document.getElementById(batona).click();
}

function subjs_list(button, id)
{
	var subject_list = 'subj_list_' + id;
	var list = document.getElementById(subject_list).style.display;
	if(list == 'none' || list == null || list == '')
	{
		button.firstChild.nodeValue = 'скрыть список';
		document.getElementById(subject_list).style.display = 'block';
	}
	else
	{
		button.firstChild.nodeValue = 'показать список предметов параллели';
		document.getElementById(subject_list).style.display = 'none';
	}
}

function send_subjs_form(the_form, parallel, school)
{
	var els = the_form.elements;
	var args = '';
	var has_checked = false;
	args += 'object=add_class,change_subj=1,parallel=' + parallel + ',' + 'school=' + school + ',';
	args += 'checked=';
	for(i = 0; i < els.length; i++)
	{
		if(els[i].type == 'checkbox' && els[i].checked)
		{
			has_checked = true;
			args += els[i].value + '::';
		}
	}
	args.substr(0, args.length - 1);
	if(!has_checked){alert('Ошибка! Не выбран ни один предмет!'); return false;}
	requestDataString(args);
	return false;
}

function change_marks_spisok(the_form)
{
	var els = the_form.elements;
	var args = '';
	var has_checked = false;
	args += 'object=operator_marks,mode=save,';
	args += 'checked=';
	for(i = 0; i < els.length; i++)
	{
		if(els[i].type == 'checkbox' && els[i].checked)
		{
			has_checked = true;
			args += escape(els[i].value) + '::';
		}
	}
	if(!has_checked){alert('Ошибка! Не выбрана ни одна отметка!'); return false;}
	//alert(args);
	requestDataString(args);
	return false;
}


/***********************/
function addEvent(elt, name, handler, atEnd)
{
	name = name.replace(/^(on)?/, 'on'); 
	var prev = elt[name];
	var tmp = '__tmp';
	elt[name] = function(e)
	{
		if (!e) e = window.event;
		var result;
		if (!atEnd)
		{
			elt[tmp] = handler; result = elt[tmp](e); elt[tmp] = null;
			if (result === false) return result;
		}
		if (prev)
		{
			elt[tmp] = prev; result = elt[tmp](e); elt[tmp] = null;
		}
		if(atEnd && result !== false)
		{
			elt[tmp] = handler; result = elt[tmp](e); elt[tmp] = null;
		}
		return result;
	}
	return handler;
}

function onl()
{
	var all_inputs = document.getElementsByTagName("input");
	var i = 0;
	while(i != all_inputs.length)
	{
		if(all_inputs[i].type == "checkbox")
		{
			all_inputs[i].checked = false;
			addEvent(all_inputs[i], "onchange", _change, true);
		}
		i++;
	}
}

function _change()
{
	var turn = this.value;
	if(this.checked == true)
	{
		_change_select(this.form, false, turn);
	}
	else
	{
		_change_select(this.form, true, turn)
	}

}

function _change_select(myform, switchtype, turn)
{
	f_els = myform.elements;
	for(i=0; i < f_els.length; i++)
	{
		if(f_els[i].type == "select" || f_els[i].type.indexOf("select") != -1)
		{
			a = f_els[i].name.split('_');
			if(a[1] == turn)
			{
				if(switchtype)
				{
					f_els[i].disabled = false;
				}
				else
				{
					f_els[i].selectedIndex = 0;
					f_els[i].disabled = true;
				}
			}
		}
	}
}

function show_warn_list(id)
{
	var list = document.getElementById(id).style.display;
	if(list == 'none' || list == null || list == '')
	{
		document.getElementById(id).style.display = 'block';
	}
	else
	{
		document.getElementById(id).style.display = 'none';
	}
}
