function process_filter(form, date, reset) {
	var uri, fid, vid, is_kids, is_premiere, price_from, price_to, currid, sort, thid, thgeoid, s;
	var vids = new Array;
	var fids = new Array;
	var thids = new Array;

	var elem = document.getElementById('ff_uri');
	if (elem) {
		uri = elem.value;
	}

	if (reset != 'reset') {
		elem = document.getElementById('ff_is_kids');
		if (elem && elem.checked) {
			is_kids = elem.value;
		}
		elem = document.getElementById('ff_is_premiere');
		if (elem && elem.checked) {
			is_premiere = elem.value;
		}
		elem = document.getElementById('ff_price_from');
		if (elem) {
			price_from = elem.value;
		}
		elem = document.getElementById('ff_price_to');
		if (elem) {
			price_to = elem.value;
		}
		elem = document.getElementById('ff_s');
		if (elem) {
			s = encodeURIComponent(elem.value);
		}
		elem = document.getElementById('ff_currid');
		if (elem) {
			currid = elem.options[elem.selectedIndex].value;
		}
		elem = document.getElementById('ff_sort');
		if (elem) {
			sort = elem.options[elem.selectedIndex].value;
		}
		elem = document.getElementById('ff_thgeoid');
		if (elem) {
			thgeoid = elem.options[elem.selectedIndex].value;
		}

		elem = document.getElementById('vselector');
		if (elem) {
			var inputs = elem.getElementsByTagName('input');
			for (var i = 0; i < inputs.length; i++) {
				var cb = inputs[i];
				if (cb.getAttribute('type') != 'checkbox') {
					continue;
				}
				if (cb.checked) {
					vids[vids.length] = cb.value;
				}
			}
		}
		vid = vids.join(',');

		elem = document.getElementById('fselector');
		if (elem) {
			var inputs = elem.getElementsByTagName('input');
			for (var i = 0; i < inputs.length; i++) {
				var cb = inputs[i];
				if (cb.getAttribute('type') != 'checkbox') {
					continue;
				}
				if (cb.checked) {
					fids[fids.length] = cb.value;
				}
			}
		}
		fid = fids.join(',');

		elem = document.getElementById('thselector');
		if (elem) {
			var inputs = elem.getElementsByTagName('input');
			for (var i = 0; i < inputs.length; i++) {
				var cb = inputs[i];
				if (cb.getAttribute('type') != 'checkbox') {
					continue;
				}
				if (cb.checked) {
					thids[thids.length] = cb.value;
				}
			}
		}
		thid = thids.join(',');
	}

	var url = '/' + uri + (vid ? '/v' + vid : '') + (thid ? '/th' + thid : '') + (thgeoid ? '/thgeoid' + thgeoid : '') + (date ? '/date' + date : '') + (is_kids ? '/kids' : '') + (is_premiere ? '/premiere' : '') + (price_from || price_to ? '/p' + currid + price_from + '-' + price_to : '') + (sort ? '/s' + sort : '') + (fid ? '/f' + fid : '') + (s ? '/srch' + s + '/csП' : '') + '/';
	form.action = url;
	return true;
}

function replace_vendors(req, res) {
	var place = document.getElementById('vselector');
	for (var i=0; i<place.childNodes.length;) {
		place.removeChild(place.childNodes[0]);
	}

	var vendors = res.getElementsByTagName('vendors');
	if (vendors.length > 0) {
		place.appendChild(document.createTextNode('Производители:'));
		var br = document.createElement('br');
		place.appendChild(br);
	}

	if (vendors.length > 5) {
		var max_length = 0;

		for (var i=0; i<vendors.length; i++) {
			var vendor = vendors[i];
			var vname = vendor.getElementsByTagName('name')[0].firstChild.data;
			var len = vname.length;
			if (len > max_length) {
				max_length = len;
			}
		}
		var num_cols;
		if (max_length > 18) {
			num_cols = 3;
		}
		else {
			num_cols = 4;
		}
		var num_rows = Math.ceil(vendors.length / num_cols);

		new_table = document.createElement('table');
		new_tbody = document.createElement('TBODY');
		new_table.cellspacing = '0';
		new_table.id = 'vendors_table';

		new_row = document.createElement('tr');

		for (var i=0; i<vendors.length; i++) {
			if (i > 0 && i % num_rows == 0) {
				new_row.appendChild(new_td);
			}
			if (i == 0 || i % num_rows == 0) {
				new_td = document.createElement('td');
			} 
			var vendor = vendors[i];
			var vid = vendor.getElementsByTagName('vid')[0].firstChild.data;
			var vname = vendor.getElementsByTagName('name')[0].firstChild.data;
			var vcount = vendor.getAttribute('count');

			var elem = document.createElement('input');
			elem.type = 'checkbox';
			elem.id = 'vid' + vid;
			elem.name = 'vid';
			elem.value = vid;

			new_td.appendChild(elem);

			var label = document.createElement('label');
			label.htmlFor = 'vid' + vid;
			var text = document.createTextNode(vname);
			label.appendChild(text);

			new_td.appendChild(label);

			var text2 = document.createTextNode(' ');
			new_td.appendChild(text2);

			var link = document.createElement('a');
			link.href = '/v' + vid + '/';
			link.title = 'Информация о производителе "'+ vname + '"';

			var img = document.createElement('img');
			img.style.border = '0';
			img.src = '/img/info.gif';
			img.alt = 'Информация о производителе "' + vname + '"';
			link.appendChild(img);
			new_td.appendChild(link);

			var text3 = document.createTextNode(' (' + vcount + ')');
			new_td.appendChild(text3);
			
			var br = document.createElement('br');
			new_td.appendChild(br);
		}
		new_row.appendChild(new_td);
		new_table.appendChild(new_tbody);
		new_tbody.appendChild(new_row);
		place.appendChild(new_table);
	}
	else {
		for (var i=0; i<vendors.length; i++) {
			var vendor = vendors[i];
			var vid = vendor.getElementsByTagName('vid')[0].firstChild.data;
			var vname = vendor.getElementsByTagName('name')[0].firstChild.data;
			var vcount = vendor.getAttribute('count');

			var elem = document.createElement('input');
			elem.type = 'checkbox';
			elem.id = 'vid' + vid;
			elem.name = 'vid';
			elem.value = vid;

			place.appendChild(elem);

			var label = document.createElement('label');
			label.htmlFor = 'vid' + vid;
			var text = document.createTextNode(vname);
			label.appendChild(text);

			place.appendChild(label);

			var text2 = document.createTextNode(' ');
			place.appendChild(text2);

			var link = document.createElement('a');
			link.href = '/v' + vid + '/';
			link.title = 'Информация о производителе "'+ vname + '"';

			var img = document.createElement('img');
			img.style.border = '0';
			img.src = '/img/info.gif';
			img.alt = 'Информация о производителе "' + vname + '"';
			link.appendChild(img);
			place.appendChild(link);

			var text3 = document.createTextNode(' (' + vcount + ')');
			place.appendChild(text3);

		}
	}
}

function ie_handler() {
	var id = window.event.srcElement.id;
	var prev = id.substr(8);
	loadXMLDoc('/ajax/calendar/' + prev);
}

function ie_handler2() {
	var id = window.event.srcElement.id;
	var day = id.substr(7);
	process_filter(document.getElementById('filter_form'), day);
	document.getElementById('filter_form').submit();
}

function ie_handler3() {
	process_filter(document.getElementById('filter_form'), '');
	document.getElementById('filter_form').submit();
}

function show_calendar(req, res) {
	var place = document.getElementById('calendar');
	for (var i=0; i<place.childNodes.length;) {
		place.removeChild(place.childNodes[0]);
	}
	var tbody = document.createElement('tbody');
	place.appendChild(tbody);

	var cal = res.getElementsByTagName('calendar')[0];
	var month = cal.getAttribute('month');
	var year = cal.getAttribute('year');
	var mprev = cal.getAttribute('prev');
	var mnext = cal.getAttribute('next');
	var today = cal.getAttribute('today');

	var tr = document.createElement('tr');
	tbody.appendChild(tr);
	var td = document.createElement('td');
	td.colSpan = 7;
	td.style.textAlign = 'center';
	td.noWrap = 'nowrap';

	var prev = document.createElement('span');
	prev.setAttribute('id', 'callink_' + mprev);
	prev.className = 'calendar_link';
	if (window.navigator.appName.match(/Explorer/i)) {
		prev.onclick = ie_handler;
	} else {
		prev.setAttribute('onclick', 'loadXMLDoc("/ajax/calendar/' + mprev + '")');
	}
	prev.appendChild( document.createTextNode('<<') );
	td.appendChild(prev);

	var monyear = document.createElement('span');
	monyear.className = 'calendar_monyear';
	monyear.appendChild( document.createTextNode(' ' + month + ' ' + year + ' ') );
	td.appendChild(monyear);

	var next = document.createElement('span');
	next.setAttribute('id', 'callink_' + mnext);
	next.className = 'calendar_link';
	if (window.navigator.appName.match(/Explorer/i)) {
		next.onclick = ie_handler;
	} else {
		next.setAttribute('onclick', 'loadXMLDoc("/ajax/calendar/' + mnext + '")');
	}
	next.appendChild( document.createTextNode('>>') );
	td.appendChild(next);
	tr.appendChild(td);

	tr = document.createElement('tr');
	tr.className = 'calendar_wdlist';
	var weekdays = new Array('пн','вт','ср','чт','пт','сб','вс');
	for (var i=0; i<weekdays.length; i++) {
		var td = document.createElement('td');
		td.appendChild( document.createTextNode(weekdays[i]) );
		tr.appendChild(td);
	}
	tbody.appendChild(tr);

	var weeks = cal.getElementsByTagName('week');
	for (var i=0; i < weeks.length; i++) {
		var tr = document.createElement('tr');
		tbody.appendChild(tr);

		var days = weeks[i].getElementsByTagName('day');
		var tds = new Array;
		for (var j=0; j < days.length; j++) {
			var day = days[j];
			var dofw = null;
			var num = null;
			var fullday = null;

			if (day) {
				dofw = day.getAttribute('dofw');
				num = day.getAttribute('num');
				fullday = day.getAttribute('fullday');
			}

			var superspan = document.createElement('span');
			if (dofw == 5 || dofw == 6) {
				superspan.className = 'calendar_holiday';
			} else {
				superspan.className = 'calendar_workday';
			}

			var subspan;
			if (fullday == today) {
				subspan = document.createElement('span');
				subspan.className = 'calendar_today';
				subspan.appendChild( document.createTextNode(num) );
			} else {
				subspan = document.createTextNode(num);
			}

			var span = document.createElement('span');
			span.setAttribute('id', 'calday_' + fullday);
			span.className = 'calendar_link';
			if (num) {
				span.appendChild(subspan);
			}
			if (window.navigator.appName.match(/Explorer/i)) {
				span.onclick = ie_handler2;
			} else {
				span.setAttribute('onclick', 'process_filter(document.getElementById("filter_form"), "' + fullday + '"); document.getElementById("filter_form").submit();');
			}

			tds[dofw] = document.createElement('td');
			tds[dofw].appendChild(superspan);
			superspan.appendChild(span);
		}

		for (var j=0; j < 7; j++) {
			if (tds[j]) {
				tr.appendChild(tds[j]);
			} else {
				var td = document.createElement('td');
				td.appendChild( document.createTextNode(' ') );
				tr.appendChild(td);
			}
		}
	}

	tr = document.createElement('tr');
	var td = document.createElement('td');
	td.colSpan = 7;
	td.style.textAlign = 'center';

	span = document.createElement('span');
	span.className = 'calendar_link';
	span.appendChild( document.createTextNode('сбросить дату') );
	if (window.navigator.appName.match(/Explorer/i)) {
		span.onclick = ie_handler3;
	} else {
		span.setAttribute('onclick', 'process_filter(document.getElementById("filter_form"), ""); document.getElementById("filter_form").submit();');
	}

	td.appendChild(span);
	tr.appendChild(td);
	tbody.appendChild(tr);
}

function show_theaters(req, res) {
	var place = document.getElementById('thselector');
	for (var i=0; i<place.childNodes.length;) {
		place.removeChild(place.childNodes[0]);
	}

	var theaters = res.getElementsByTagName('theaters');

	for (var i=0; i<theaters.length; i++) {
		var thid = theaters[i].getElementsByTagName('thid')[0].firstChild.data;
		var thname;
		if (theaters[i].getElementsByTagName('name')[0].firstChild) {
			thname = theaters[i].getElementsByTagName('name')[0].firstChild.data;
		} else {
			thname = theaters[i].getElementsByTagName('fname')[0].firstChild.data;
		}

		var elem1 = document.createElement('input');
		elem1.type = 'checkbox';
		elem1.name = 'thid';
		elem1.id = 'thid' + thid;
		elem1.value = thid;

		place.appendChild(elem1);


		var label = document.createElement('label');
		label.htmlFor = 'thid' + thid;
		var text = document.createTextNode(thname);
		label.appendChild(text);

		place.appendChild(label);

		var br = document.createElement('br');
		place.appendChild(br);
	}

}

